From: wolf Date: Fri, 12 Feb 1999 10:29:48 +0000 (+0000) Subject: Move the class hierarchy files from the deal.II tree to the general doc tree. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e41ad881eaa38172794509baf3ac81bec7d6c77;p=dealii-svn.git Move the class hierarchy files from the deal.II tree to the general doc tree. git-svn-id: https://svn.dealii.org/trunk@787 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/doc/reports/class-hierarchies/1d-dof.eps b/deal.II/doc/reports/class-hierarchies/1d-dof.eps new file mode 100644 index 0000000000..98892235cb --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/1d-dof.eps @@ -0,0 +1,156 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: 1d-dof.eps +%%Creator: fig2dev Version 3.2 Patchlevel 0-beta2 +%%CreationDate: Thu Nov 5 15:50:20 1998 +%%For: wolf@chaos (Wolfgang Bangerth) +%%Orientation: Portrait +%%BoundingBox: 0 0 514 311 +%%Pages: 0 +%%BeginSetup +%%IncludeFeature: *PageSize Letter +%%EndSetup +%%Magnification: 1.00 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-8.0 330.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n 0 5527 m 0 0 l 8732 0 l 8732 5527 l cp clip + 0.06000 0.06000 sc +% Polyline +7.500 slw +n 3705 1500 m 3600 1500 3600 1770 105 arcto 4 {pop} repeat + 3600 1875 5895 1875 105 arcto 4 {pop} repeat + 6000 1875 6000 1605 105 arcto 4 {pop} repeat + 6000 1500 3705 1500 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 1155 2700 m 1050 2700 1050 2970 105 arcto 4 {pop} repeat + 1050 3075 3645 3075 105 arcto 4 {pop} repeat + 3750 3075 3750 2805 105 arcto 4 {pop} repeat + 3750 2700 1155 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 855 3900 m 750 3900 750 4170 105 arcto 4 {pop} repeat + 750 4275 4020 4275 105 arcto 4 {pop} repeat + 4125 4275 4125 4005 105 arcto 4 {pop} repeat + 4125 3900 855 3900 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 1155 5100 m 1050 5100 1050 5370 105 arcto 4 {pop} repeat + 1050 5475 3645 5475 105 arcto 4 {pop} repeat + 3750 5475 3750 5205 105 arcto 4 {pop} repeat + 3750 5100 1155 5100 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 4800 1875 m 2400 2700 l gs col0 s gr +% Polyline +n 2400 3075 m 2400 3900 l gs col0 s gr +% Polyline +n 2400 4275 m 2400 5100 l gs col0 s gr +% Polyline +7.500 slw +n 255 1500 m 150 1500 150 1770 105 arcto 4 {pop} repeat + 150 1875 2145 1875 105 arcto 4 {pop} repeat + 2250 1875 2250 1605 105 arcto 4 {pop} repeat + 2250 1500 255 1500 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 1200 1875 m 2400 2700 l gs col0 s gr +/Times-Roman ff 375.00 scf sf +4800 600 m +gs 1 -1 sc (Class Hierarchy for the 1-dimensional Case, Part 2) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +4800 1800 m +gs 1 -1 sc (DoFAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +2400 3000 m +gs 1 -1 sc (DoFLineAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +2400 4200 m +gs 1 -1 sc (DoFSubstructAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +2400 5400 m +gs 1 -1 sc (DoFCellAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +1200 1800 m +gs 1 -1 sc (CellAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +$F2psEnd +rs diff --git a/deal.II/doc/reports/class-hierarchies/1d-dof.fig b/deal.II/doc/reports/class-hierarchies/1d-dof.fig new file mode 100644 index 0000000000..935d4c9d33 --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/1d-dof.fig @@ -0,0 +1,33 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 6000 1875 6000 1500 3600 1500 3600 1875 6000 1875 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 3750 3075 3750 2700 1050 2700 1050 3075 3750 3075 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 4125 4275 4125 3900 750 3900 750 4275 4125 4275 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 3750 5475 3750 5100 1050 5100 1050 5475 3750 5475 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 1875 2400 2700 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 2400 3075 2400 3900 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 2400 4275 2400 5100 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 2250 1875 2250 1500 150 1500 150 1875 2250 1875 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 1200 1875 2400 2700 +4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 1-dimensional Case, Part 2\001 +4 1 0 0 0 0 20 0.0000 4 195 1995 4800 1800 DoFAccessor<1>\001 +4 1 0 0 0 0 20 0.0000 4 195 2520 2400 3000 DoFLineAccessor<1>\001 +4 1 0 0 0 0 20 0.0000 4 195 3105 2400 4200 DoFSubstructAccessor<1>\001 +4 1 0 0 0 0 20 0.0000 4 195 2460 2400 5400 DoFCellAccessor<1>\001 +4 1 0 0 0 0 20 0.0000 4 195 1950 1200 1800 CellAccessor<1>\001 diff --git a/deal.II/doc/reports/class-hierarchies/1d-dof.gif b/deal.II/doc/reports/class-hierarchies/1d-dof.gif new file mode 100644 index 0000000000..4d9b814496 Binary files /dev/null and b/deal.II/doc/reports/class-hierarchies/1d-dof.gif differ diff --git a/deal.II/doc/reports/class-hierarchies/1d-tria.eps b/deal.II/doc/reports/class-hierarchies/1d-tria.eps new file mode 100644 index 0000000000..2483208e62 --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/1d-tria.eps @@ -0,0 +1,144 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: 1d-tria.eps +%%Creator: fig2dev Version 3.2 Patchlevel 0-beta2 +%%CreationDate: Thu Nov 5 16:56:03 1998 +%%For: wolf@chaos (Wolfgang Bangerth) +%%Orientation: Portrait +%%BoundingBox: 0 0 514 311 +%%Pages: 0 +%%BeginSetup +%%IncludeFeature: *PageSize Letter +%%EndSetup +%%Magnification: 1.00 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-8.0 330.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n 0 5527 m 0 0 l 8732 0 l 8732 5527 l cp clip + 0.06000 0.06000 sc +% Polyline +7.500 slw +n 3705 1500 m 3600 1500 3600 1770 105 arcto 4 {pop} repeat + 3600 1875 5895 1875 105 arcto 4 {pop} repeat + 6000 1875 6000 1605 105 arcto 4 {pop} repeat + 6000 1500 3705 1500 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 780 2700 m 675 2700 675 2970 105 arcto 4 {pop} repeat + 675 3075 2745 3075 105 arcto 4 {pop} repeat + 2850 3075 2850 2805 105 arcto 4 {pop} repeat + 2850 2700 780 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 855 5100 m 750 5100 750 5370 105 arcto 4 {pop} repeat + 750 5475 2745 5475 105 arcto 4 {pop} repeat + 2850 5475 2850 5205 105 arcto 4 {pop} repeat + 2850 5100 855 5100 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 4800 1875 m 1800 2700 l gs col0 s gr +% Polyline +n 1800 3075 m 1800 3900 l gs col0 s gr +% Polyline +n 1800 4275 m 1800 5100 l gs col0 s gr +% Polyline +7.500 slw +n 255 3900 m 150 3900 150 4170 105 arcto 4 {pop} repeat + 150 4275 3345 4275 105 arcto 4 {pop} repeat + 3450 4275 3450 4005 105 arcto 4 {pop} repeat + 3450 3900 255 3900 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Times-Roman ff 300.00 scf sf +4800 1800 m +gs 1 -1 sc (TriaAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +1800 3000 m +gs 1 -1 sc (LineAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +1800 5400 m +gs 1 -1 sc (CellAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 375.00 scf sf +4800 600 m +gs 1 -1 sc (Class Hierarchy for the 1-dimensional Case, Part 1) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +1800 4200 m +gs 1 -1 sc (TriaSubstructAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr +$F2psEnd +rs diff --git a/deal.II/doc/reports/class-hierarchies/1d-tria.fig b/deal.II/doc/reports/class-hierarchies/1d-tria.fig new file mode 100644 index 0000000000..8db63ed8e2 --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/1d-tria.fig @@ -0,0 +1,28 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 6000 1875 6000 1500 3600 1500 3600 1875 6000 1875 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 2850 3075 2850 2700 675 2700 675 3075 2850 3075 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 2850 5475 2850 5100 750 5100 750 5475 2850 5475 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 1875 1800 2700 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 1800 3075 1800 3900 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 1800 4275 1800 5100 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 3450 4275 3450 3900 150 3900 150 4275 3450 4275 +4 1 0 0 0 0 20 0.0000 4 195 1980 4800 1800 TriaAccessor<1>\001 +4 1 0 0 0 0 20 0.0000 4 195 2010 1800 3000 LineAccessor<1>\001 +4 1 0 0 0 0 20 0.0000 4 195 1950 1800 5400 CellAccessor<1>\001 +4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 1-dimensional Case, Part 1\001 +4 1 0 0 0 0 20 0.0000 4 195 3090 1800 4200 TriaSubstructAccessor<1>\001 diff --git a/deal.II/doc/reports/class-hierarchies/1d-tria.gif b/deal.II/doc/reports/class-hierarchies/1d-tria.gif new file mode 100644 index 0000000000..4c16c9cd5e Binary files /dev/null and b/deal.II/doc/reports/class-hierarchies/1d-tria.gif differ diff --git a/deal.II/doc/reports/class-hierarchies/2d-dof.eps b/deal.II/doc/reports/class-hierarchies/2d-dof.eps new file mode 100644 index 0000000000..d933662b02 --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/2d-dof.eps @@ -0,0 +1,182 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: 2d-dof.eps +%%Creator: fig2dev Version 3.2 Patchlevel 0-beta2 +%%CreationDate: Thu Nov 5 15:50:10 1998 +%%For: wolf@chaos (Wolfgang Bangerth) +%%Orientation: Portrait +%%BoundingBox: 0 0 560 311 +%%Pages: 0 +%%BeginSetup +%%IncludeFeature: *PageSize Letter +%%EndSetup +%%Magnification: 1.00 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-8.0 330.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n 0 5527 m 0 0 l 9502 0 l 9502 5527 l cp clip + 0.06000 0.06000 sc +% Polyline +7.500 slw +n 3705 1500 m 3600 1500 3600 1770 105 arcto 4 {pop} repeat + 3600 1875 5895 1875 105 arcto 4 {pop} repeat + 6000 1875 6000 1605 105 arcto 4 {pop} repeat + 6000 1500 3705 1500 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 1155 2700 m 1050 2700 1050 2970 105 arcto 4 {pop} repeat + 1050 3075 3645 3075 105 arcto 4 {pop} repeat + 3750 3075 3750 2805 105 arcto 4 {pop} repeat + 3750 2700 1155 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 4800 1875 m 2400 2700 l gs col0 s gr +% Polyline +7.500 slw +n 255 1500 m 150 1500 150 1770 105 arcto 4 {pop} repeat + 150 1875 2145 1875 105 arcto 4 {pop} repeat + 2250 1875 2250 1605 105 arcto 4 {pop} repeat + 2250 1500 255 1500 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 1200 1875 m 2400 2700 l gs col0 s gr +% Polyline +7.500 slw +n 5655 3900 m 5550 3900 5550 4170 105 arcto 4 {pop} repeat + 5550 4275 8820 4275 105 arcto 4 {pop} repeat + 8925 4275 8925 4005 105 arcto 4 {pop} repeat + 8925 3900 5655 3900 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 7200 3075 m 7200 3900 l gs col0 s gr +% Polyline +n 7200 4275 m 7200 5100 l gs col0 s gr +% Polyline +7.500 slw +n 5955 5100 m 5850 5100 5850 5370 105 arcto 4 {pop} repeat + 5850 5475 8445 5475 105 arcto 4 {pop} repeat + 8550 5475 8550 5205 105 arcto 4 {pop} repeat + 8550 5100 5955 5100 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 5955 2700 m 5850 2700 5850 2970 105 arcto 4 {pop} repeat + 5850 3075 8445 3075 105 arcto 4 {pop} repeat + 8550 3075 8550 2805 105 arcto 4 {pop} repeat + 8550 2700 5955 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 7455 1500 m 7350 1500 7350 1770 105 arcto 4 {pop} repeat + 7350 1875 9345 1875 105 arcto 4 {pop} repeat + 9450 1875 9450 1605 105 arcto 4 {pop} repeat + 9450 1500 7455 1500 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 4800 1875 m 7200 2700 l gs col0 s gr +% Polyline +n 8400 1875 m 7200 2700 l gs col0 s gr +/Times-Roman ff 300.00 scf sf +1200 1800 m +gs 1 -1 sc (LineAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 375.00 scf sf +4800 600 m +gs 1 -1 sc (Class Hierarchy for the 2-dimensional Case, Part 2) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +4800 1800 m +gs 1 -1 sc (DoFAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +2400 3000 m +gs 1 -1 sc (DoFLineAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +7200 4200 m +gs 1 -1 sc (DoFSubstructAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +7200 5400 m +gs 1 -1 sc (DoFCellAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +7200 3000 m +gs 1 -1 sc (DoFQuadAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +8400 1800 m +gs 1 -1 sc (CellAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +$F2psEnd +rs diff --git a/deal.II/doc/reports/class-hierarchies/2d-dof.fig b/deal.II/doc/reports/class-hierarchies/2d-dof.fig new file mode 100644 index 0000000000..f60979a2a9 --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/2d-dof.fig @@ -0,0 +1,43 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 6000 1875 6000 1500 3600 1500 3600 1875 6000 1875 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 3750 3075 3750 2700 1050 2700 1050 3075 3750 3075 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 1875 2400 2700 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 2250 1875 2250 1500 150 1500 150 1875 2250 1875 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 1200 1875 2400 2700 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 8925 4275 8925 3900 5550 3900 5550 4275 8925 4275 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 3075 7200 3900 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 4275 7200 5100 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 8550 5475 8550 5100 5850 5100 5850 5475 8550 5475 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 8550 3075 8550 2700 5850 2700 5850 3075 8550 3075 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 9450 1875 9450 1500 7350 1500 7350 1875 9450 1875 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 1875 7200 2700 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 8400 1875 7200 2700 +4 1 0 0 0 0 20 0.0000 4 195 2010 1200 1800 LineAccessor<2>\001 +4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 2-dimensional Case, Part 2\001 +4 1 0 0 0 0 20 0.0000 4 195 1995 4800 1800 DoFAccessor<2>\001 +4 1 0 0 0 0 20 0.0000 4 195 2520 2400 3000 DoFLineAccessor<2>\001 +4 1 0 0 0 0 20 0.0000 4 195 3105 7200 4200 DoFSubstructAccessor<2>\001 +4 1 0 0 0 0 20 0.0000 4 195 2460 7200 5400 DoFCellAccessor<2>\001 +4 1 0 0 0 0 20 0.0000 4 255 2625 7200 3000 DoFQuadAccessor<2>\001 +4 1 0 0 0 0 20 0.0000 4 195 1950 8400 1800 CellAccessor<2>\001 diff --git a/deal.II/doc/reports/class-hierarchies/2d-dof.gif b/deal.II/doc/reports/class-hierarchies/2d-dof.gif new file mode 100644 index 0000000000..bfce7f5607 Binary files /dev/null and b/deal.II/doc/reports/class-hierarchies/2d-dof.gif differ diff --git a/deal.II/doc/reports/class-hierarchies/2d-tria.eps b/deal.II/doc/reports/class-hierarchies/2d-tria.eps new file mode 100644 index 0000000000..8c1d3a2324 --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/2d-tria.eps @@ -0,0 +1,157 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: 2d-tria.eps +%%Creator: fig2dev Version 3.2 Patchlevel 0-beta2 +%%CreationDate: Thu Nov 5 16:57:00 1998 +%%For: wolf@chaos (Wolfgang Bangerth) +%%Orientation: Portrait +%%BoundingBox: 0 0 529 311 +%%Pages: 0 +%%BeginSetup +%%IncludeFeature: *PageSize Letter +%%EndSetup +%%Magnification: 1.00 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-39.0 330.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n 0 5527 m 0 0 l 9502 0 l 9502 5527 l cp clip + 0.06000 0.06000 sc +% Polyline +7.500 slw +n 3705 1500 m 3600 1500 3600 1770 105 arcto 4 {pop} repeat + 3600 1875 5895 1875 105 arcto 4 {pop} repeat + 6000 1875 6000 1605 105 arcto 4 {pop} repeat + 6000 1500 3705 1500 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 780 2700 m 675 2700 675 2970 105 arcto 4 {pop} repeat + 675 3075 2745 3075 105 arcto 4 {pop} repeat + 2850 3075 2850 2805 105 arcto 4 {pop} repeat + 2850 2700 780 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 4800 1875 m 1800 2700 l gs col0 s gr +% Polyline +7.500 slw +n 6780 2700 m 6675 2700 6675 2970 105 arcto 4 {pop} repeat + 6675 3075 8820 3075 105 arcto 4 {pop} repeat + 8925 3075 8925 2805 105 arcto 4 {pop} repeat + 8925 2700 6780 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 6855 5100 m 6750 5100 6750 5370 105 arcto 4 {pop} repeat + 6750 5475 8745 5475 105 arcto 4 {pop} repeat + 8850 5475 8850 5205 105 arcto 4 {pop} repeat + 8850 5100 6855 5100 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +15.000 slw +n 4800 1875 m 7800 2700 l gs col0 s gr +% Polyline +n 7800 3075 m 7800 3900 l gs col0 s gr +% Polyline +n 7800 4275 m 7800 5100 l gs col0 s gr +% Polyline +7.500 slw +n 6255 3900 m 6150 3900 6150 4170 105 arcto 4 {pop} repeat + 6150 4275 9345 4275 105 arcto 4 {pop} repeat + 9450 4275 9450 4005 105 arcto 4 {pop} repeat + 9450 3900 6255 3900 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Times-Roman ff 300.00 scf sf +4800 1800 m +gs 1 -1 sc (TriaAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +1800 3000 m +gs 1 -1 sc (LineAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +7800 3000 m +gs 1 -1 sc (QuadAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +7800 5400 m +gs 1 -1 sc (CellAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 375.00 scf sf +4800 600 m +gs 1 -1 sc (Class Hierarchy for the 2-dimensional Case, Part 1) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman ff 300.00 scf sf +7800 4200 m +gs 1 -1 sc (TriaSubstructAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr +$F2psEnd +rs diff --git a/deal.II/doc/reports/class-hierarchies/2d-tria.fig b/deal.II/doc/reports/class-hierarchies/2d-tria.fig new file mode 100644 index 0000000000..bcb70161b9 --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/2d-tria.fig @@ -0,0 +1,33 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 6000 1875 6000 1500 3600 1500 3600 1875 6000 1875 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 2850 3075 2850 2700 675 2700 675 3075 2850 3075 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 1875 1800 2700 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 8925 3075 8925 2700 6675 2700 6675 3075 8925 3075 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 8850 5475 8850 5100 6750 5100 6750 5475 8850 5475 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 1875 7800 2700 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 7800 3075 7800 3900 +2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 + 7800 4275 7800 5100 +2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 + 9450 4275 9450 3900 6150 3900 6150 4275 9450 4275 +4 1 0 0 0 0 20 0.0000 4 195 1980 4800 1800 TriaAccessor<2>\001 +4 1 0 0 0 0 20 0.0000 4 195 2010 1800 3000 LineAccessor<2>\001 +4 1 0 0 0 0 20 0.0000 4 255 2115 7800 3000 QuadAccessor<2>\001 +4 1 0 0 0 0 20 0.0000 4 195 1950 7800 5400 CellAccessor<2>\001 +4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 2-dimensional Case, Part 1\001 +4 1 0 0 0 0 20 0.0000 4 195 3090 7800 4200 TriaSubstructAccessor<2>\001 diff --git a/deal.II/doc/reports/class-hierarchies/2d-tria.gif b/deal.II/doc/reports/class-hierarchies/2d-tria.gif new file mode 100644 index 0000000000..a018ee4db3 Binary files /dev/null and b/deal.II/doc/reports/class-hierarchies/2d-tria.gif differ diff --git a/deal.II/doc/reports/class-hierarchies/index.html b/deal.II/doc/reports/class-hierarchies/index.html new file mode 100644 index 0000000000..19703602ee --- /dev/null +++ b/deal.II/doc/reports/class-hierarchies/index.html @@ -0,0 +1,301 @@ + + +DEAL + + + +

+Description of the C++ class hierarchy for the +accessor classes +

+ + +The class hierarchy of the accessor classes used to retrieve and store +data in the triangulation and degree of freedom handler objects is one +of the more complicated parts of the library. It makes heavy use of +class templates with integers as template parameters as well as of +explicit specialization of classes and member functions. Therefore, +it is not so easy to see the connections and inheritance relations +within this part of the class tree; this document tries to shed a bit +of light onto this. + + + +

+What iterators and accessors are +

+ +When using adative finite elements, the data structures often are +extremely complex, requiring multiply indirected access and complex +relationships between the different places where data is stored. The +traditional way to handle this is to put all data which belongs +together somehow into a structure or object; however, sometimes this +can not be done efficiently, leading to either higher memory +consumption (when you have to store many small data pieces and because +you have to store a lot of pointers to other objects) or higher coding +requirements (when you want to follow all those pointers to the object +you desire). + +

+ +Therefore, we took over a concept which was already used in the C++ +standard template library, namely iterators and accessors. An accessor +is an object that looks like if it had all the information stored but +really only delegates the access to the right places; in fact, within +this library, accessor store almost no information but know where to +get everything from the complex and nested data structures the +triangulation object offers. They have a simple interface which allows +to extract any desired information from the triangulation and +therefore makes access much easier and safer in three ways: first it +performs range and parameter checking when in debugging mode; second, +it encapsulates the access to the real data from the user, hiding the +true data structures and thus allowing them without changing the user +programs as well as those parts of the library which only act through +accessors; and third by reducing the coding errors because of reduced +complexity, since the chains of indirect access are replaces by simple +commands. + +

+ +Iterators are a related concept: while accessors act as if they were +structures with data contained in them, iterators act as if they were +pointers pointing to accessors. You can dereference them using the +-> and * operators as with any other pointer, but they have more +functionality. Essentially, they have overloaded ++ and -- operators, +which allow the next or previous object pointed to to be just about +anywhere in memory. A good introductory example are the iterators of +the STL list<T> class, which act on a linked list +as if it were a contiguous array. The iterators in this library go +even a step further: they do not point to different objects but rather +tell the associated accessor object which data to look at +next. + +

+ +Additionally, there are different versions of the iterators which +behave differently when being incremented or decremented: while +raw iterators let the associated accessor point to any of the +objects it is made for, normal iterators always point to +objects which are in use. Usually, you will not want to see cells or +lines which are there but are unused by the triangulation (these cells +are somewhat like holes in the arrays of the triangulation; such +things happen when unrefining a cell, the freed memory is then kept +for a while because of better efficiency), so you will almost never +want to use raw iterators; they are mostly there for internal use in +the library. Normal iterators are almost like raw iterators, but +whenever you call the ++ or -- operator, the look at what they are +pointing at and skip all unused elements by increasing or decreasing +the pointer as often as necessary to reach the next used object. + +

+ +Finally, there are active iterators, which are the most +important ones. They are like normal iterators but only point to +active cells or lines. By active we mean that they have no children; +in the context in which this library is used, this is equivalent to +the fact that we do computations on these cells, lines or +whatever. Active iterators are normal iterators which skip over all +non-active cells, lines, etc when being incremented or decremented. + + + +

+The triangulation accessor hierarchy +

+ +The triangulation accessors are used to retrieve and store data in the +triangulation. There exist accessors for lines in one and higher +dimensions, accessors for quads in two and higher dimensions, and so +on. Their inheritance tree is shown in the following two pictures: + + +
+ +
+

+ +

+ +
+

+ +Some of the data is only useful if an object is a cell. For example, +neighborship is only accessible for cells, while faces (e.g. lines in +2D) can't access their neighbors (neither the adjacent cells, nor the +other faces it touches). Therefore, the CellAccessor classes are +derived from whatever object a cell is in the respective dimension, +i.e. from lines in 1D, from quads in 2D, and so on. For technical +reasons, this inheritance it mediated by the TriaSubstructAccessor +classes; they have no functionality but only serve as interface +classes; they have no meaning to the user. + + +

+Typedefs of the Triangulation class to iterators and accessors +

+ +The Triangulation<1> class declares the following data +types which involve accessors: +
+    typedef TriaRawIterator   <1,CellAccessor<1> >    raw_line_iterator;
+    typedef TriaIterator      <1,CellAccessor<1> >        line_iterator;
+    typedef TriaActiveIterator<1,CellAccessor<1> > active_line_iterator;
+
+    typedef    raw_line_iterator    raw_cell_iterator;
+    typedef        line_iterator        cell_iterator;
+    typedef active_line_iterator active_cell_iterator; 
+
+Since lines are cells in one space dimension, all line iterators are +cell iterators as well. + +

+ +In two space dimensions, the following types are declared by the +Triangulation<2> class: +

+    typedef TriaRawIterator   <2,LineAccessor<2> >    raw_line_iterator;
+    typedef TriaIterator      <2,LineAccessor<2> >        line_iterator;
+    typedef TriaActiveIterator<2,LineAccessor<2> > active_line_iterator;
+    
+    typedef TriaRawIterator   <2,CellAccessor<2> >    raw_quad_iterator;
+    typedef TriaIterator      <2,CellAccessor<2> >        quad_iterator;
+    typedef TriaActiveIterator<2,CellAccessor<2> > active_quad_iterator;
+
+    typedef    raw_quad_iterator    raw_cell_iterator;
+    typedef        quad_iterator        cell_iterator;
+    typedef active_quad_iterator active_cell_iterator;
+
+    typedef    raw_line_iterator    raw_face_iterator;
+    typedef        line_iterator        face_iterator;
+    typedef active_line_iterator active_face_iterator;    
+
+ +Since in this space dimension, quads are cells and lines are the faces +of cells, the appropriate face and cell iterators are declared in +terms of the underlying accessor types. + + + + +

+The degree of freedom accessor hierarchy +

+ + +The DoFAccessor classes provide access to the degree of freedom +information associated with cells, lines, etc. The inheritance +relationship is much the same as for the triangulation accessor +classes, as can be seen from the following pictures. In particular, +the DoFSubstructAccessor classes fulfill the same purpose as the +TriaSubstructAccessors, i.e. they only serve as interface classes +without meaning to the user. + + +
+ +
+

+ + +

+ +
+

+ +The main difference to the triangulation accessor hierarchy is that we +want the DoF accessors to provide the information about the degrees of +freedom, but for convenience also that of the triangulation. This way, +we can get all the information from one object rather than needing two +which work in parallel. + +

+ +For the named reason, it is necessary to derive the DoFLineAccessor +from the LineAccessor class of the triangulation accessor hierarchy, +as well as the DoFQuadAccessor from the QuadAccessor. However, we +would also like to include the functionality added by the CellAccessor +class; this is done through some template magic: when in one space +dimension, the DoFLineAccessor is derived from CellAccessor<1>, +while when in higher dimensions, it is derived from +LineAccessor<dim>; the same applies for the DoFQuadAccessor +class. Note that this way, CellAccessor is always a base class to +DoFCellAccessor and the inheritance lattice is dimension dependant; +the exact way of achieving this is complicated but not of interest +here. + + +

+Typedefs of the DoFHandler class to iterators and accessors +

+ + +The typedefs done by the DoFHandler class are much alike those done by +the Triangulation class. They could be summarized as follows: + +

+ +For one space dimension: + +

+    typedef TriaRawIterator   <1,DoFCellAccessor<1> >    raw_line_iterator;
+    typedef TriaIterator      <1,DoFCellAccessor<1> >        line_iterator;
+    typedef TriaActiveIterator<1,DoFCellAccessor<1> > active_line_iterator;
+
+    typedef    raw_line_iterator    raw_cell_iterator;
+    typedef        line_iterator        cell_iterator;
+    typedef active_line_iterator active_cell_iterator; 
+
+Since lines are cells in one space dimension, all line iterators are +cell iterators as well. + +

+ +For two space dimensions: + +

+    typedef TriaRawIterator   <2,DoFLineAccessor<2> >    raw_line_iterator;
+    typedef TriaIterator      <2,DoFLineAccessor<2> >        line_iterator;
+    typedef TriaActiveIterator<2,DoFLineAccessor<2> > active_line_iterator;
+    
+    typedef TriaRawIterator   <2,DoFCellAccessor<2> >    raw_quad_iterator;
+    typedef TriaIterator      <2,DoFCellAccessor<2> >        quad_iterator;
+    typedef TriaActiveIterator<2,DoFCellAccessor<2> > active_quad_iterator;
+
+    typedef    raw_quad_iterator    raw_cell_iterator;
+    typedef        quad_iterator        cell_iterator;
+    typedef active_quad_iterator active_cell_iterator;
+
+    typedef    raw_line_iterator    raw_face_iterator;
+    typedef        line_iterator        face_iterator;
+    typedef active_line_iterator active_face_iterator;    
+
+ +

+ +However, because of the dimension dependant inheritance lattice, the +actual structure of the data types is more complex for more than one +space dimension and looks like given below. Since the exact mechanism +is not of matter for the user of the library, we simply show these +typedefs for completeness without going into details here. + +

+    typedef TriaRawIterator   <2,DoFLineAccessor<2,LineAccessor<2> > >    raw_line_iterator;
+    typedef TriaIterator      <2,DoFLineAccessor<2,LineAccessor<2> > >        line_iterator;
+    typedef TriaActiveIterator<2,DoFLineAccessor<2,LineAccessor<2> > > active_line_iterator;
+
+ + + +


+ +
+Wolfgang Bangerth, 1998 +
+

 

+ + + + + + +