From 1f41066756e96d113857012c83ebb28aacba8a9b Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Fri, 20 May 2011 09:23:26 +0200 Subject: [PATCH 1/4] edited conf.py for LTE doc --- src/lte/doc/source/conf.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lte/doc/source/conf.py b/src/lte/doc/source/conf.py index 23a7278ce..7363aebeb 100644 --- a/src/lte/doc/source/conf.py +++ b/src/lte/doc/source/conf.py @@ -40,17 +40,17 @@ source_suffix = '.rst' master_doc = 'index' # General information about the project. -project = u'ns-3' -copyright = u'2011, ns-3 project' +project = u'LENA' +copyright = u'2011, CTTC' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = 'ns-3.11' +version = 'M1' # The full version, including alpha/beta/rc tags. -release = 'ns-3.11' +release = 'M1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -120,7 +120,7 @@ html_theme = 'default' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +#html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. @@ -164,7 +164,7 @@ html_static_path = ['_static'] #html_file_suffix = None # Output file base name for HTML help builder. -htmlhelp_basename = 'ns-3doc' +#htmlhelp_basename = 'ns-3doc' # -- Options for LaTeX output -------------------------------------------------- @@ -178,8 +178,10 @@ htmlhelp_basename = 'ns-3doc' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ - ('index', 'ns-3-model-library.tex', u'ns-3 Model Library', - u'ns-3 project', 'manual'), + ('lte-testing', 'lena-testing.tex', u'LENA Testing Documentation', u'CTTC', 'manual'), + ('lte-design', 'lena-design.tex', u'LENA Design Documentation', u'CTTC', 'manual'), + ('lte-user', 'lena-user.tex', u'LENA User Documentation', u'CTTC', 'manual'), + ] # The name of an image file (relative to this directory) to place at the top of From fe42982bb12f5841e967f12f4ef952f821f0fd81 Mon Sep 17 00:00:00 2001 From: mrequena Date: Fri, 20 May 2011 13:48:31 +0200 Subject: [PATCH 2/4] mcs index figure --- src/lte/doc/source/figures/lte-mcs-index.eps | 841 +++++++++++++++++++ src/lte/doc/source/figures/lte-mcs-index.pdf | Bin 0 -> 4450 bytes src/lte/doc/source/figures/lte-mcs-index.png | Bin 0 -> 13640 bytes 3 files changed, 841 insertions(+) create mode 100644 src/lte/doc/source/figures/lte-mcs-index.eps create mode 100644 src/lte/doc/source/figures/lte-mcs-index.pdf create mode 100644 src/lte/doc/source/figures/lte-mcs-index.png diff --git a/src/lte/doc/source/figures/lte-mcs-index.eps b/src/lte/doc/source/figures/lte-mcs-index.eps new file mode 100644 index 000000000..8f23b5620 --- /dev/null +++ b/src/lte/doc/source/figures/lte-mcs-index.eps @@ -0,0 +1,841 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: lte-mcs-index.eps +%%Creator: gnuplot 4.2 patchlevel 6 +%%CreationDate: Fri May 20 13:08:10 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following 6 true/false flags may be edited by hand if required +% The unit line width may also be changed +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (lte-mcs-index.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.2 patchlevel 6 ) + /Author (Manuel Requena) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri May 20 13:08:10 2011) + /DOCINFO pdfmark +end +} ifelse +% +% Gnuplot Prolog Version 4.2 (August 2006) +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} bind def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +gnudict begin +gsave +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +1.000 UL +LTa +770 448 M +6220 0 V +stroke +LTb +770 448 M +63 0 V +6157 0 R +-63 0 V +stroke +686 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 1185 M +6220 0 V +stroke +LTb +770 1185 M +63 0 V +6157 0 R +-63 0 V +stroke +686 1185 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 1923 M +6220 0 V +stroke +LTb +770 1923 M +63 0 V +6157 0 R +-63 0 V +stroke +686 1923 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 2660 M +6220 0 V +stroke +LTb +770 2660 M +63 0 V +6157 0 R +-63 0 V +stroke +686 2660 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 15)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 3397 M +6220 0 V +stroke +LTb +770 3397 M +63 0 V +6157 0 R +-63 0 V +stroke +686 3397 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 20)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 4135 M +6220 0 V +stroke +LTb +770 4135 M +63 0 V +6157 0 R +-63 0 V +stroke +686 4135 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 25)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 4872 M +6220 0 V +stroke +LTb +770 4872 M +63 0 V +6157 0 R +-63 0 V +stroke +686 4872 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 30)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 448 M +0 4424 V +stroke +LTb +770 448 M +0 63 V +0 4361 R +0 -63 V +stroke +770 308 M +[ [(Helvetica) 140.0 0.0 true true 0 (-5)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +1659 448 M +0 4424 V +stroke +LTb +1659 448 M +0 63 V +0 4361 R +0 -63 V +stroke +1659 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +2547 448 M +0 4424 V +stroke +LTb +2547 448 M +0 63 V +0 4361 R +0 -63 V +stroke +2547 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +3436 448 M +0 4424 V +stroke +LTb +3436 448 M +0 63 V +0 4361 R +0 -63 V +stroke +3436 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +4324 448 M +0 4424 V +stroke +LTb +4324 448 M +0 63 V +0 4361 R +0 -63 V +stroke +4324 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 15)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +5213 448 M +0 4424 V +stroke +LTb +5213 448 M +0 63 V +0 4361 R +0 -63 V +stroke +5213 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 20)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +6101 448 M +0 63 V +0 420 R +0 3941 V +stroke +LTb +6101 448 M +0 63 V +0 4361 R +0 -63 V +stroke +6101 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 25)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +6990 448 M +0 4424 V +stroke +LTb +6990 448 M +0 63 V +0 4361 R +0 -63 V +stroke +6990 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 30)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +770 4872 N +770 448 L +6220 0 V +0 4424 V +-6220 0 V +Z stroke +LCb setrgbcolor +280 2660 M +currentpoint gsave translate 90 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (MCS index)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3880 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (SINR [dB])] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UP +4.000 UL +LT0 +LTb +6339 861 M +[ [(Helvetica) 140.0 0.0 true true 0 (QPSK)] +] -46.7 MRshow +LT0 +6423 861 M +399 0 V +1303 448 M +178 0 V +178 295 V +177 0 V +178 0 V +178 295 V +177 0 V +178 295 V +178 0 V +178 295 V +177 0 V +178 295 V +1303 448 TriU +1481 448 TriU +1659 743 TriU +1836 743 TriU +2014 743 TriU +2192 1038 TriU +2369 1038 TriU +2547 1333 TriU +2725 1333 TriU +2903 1628 TriU +3080 1628 TriU +3258 1923 TriU +6622 861 TriU +1.000 UP +4.000 UL +LT1 +LTb +6339 721 M +[ [(Helvetica) 140.0 0.0 true true 0 (16QAM)] +] -46.7 MRshow +LT1 +6423 721 M +399 0 V +3436 2218 M +177 0 V +178 295 V +178 0 V +178 294 V +177 295 V +178 0 V +3436 2218 Box +3613 2218 Box +3791 2513 Box +3969 2513 Box +4147 2807 Box +4324 3102 Box +4502 3102 Box +6622 721 Box +1.000 UP +4.000 UL +LT2 +LTb +6339 581 M +[ [(Helvetica) 140.0 0.0 true true 0 (64QAM)] +] -46.7 MRshow +LT2 +6423 581 M +399 0 V +4680 3397 M +177 0 V +178 295 V +178 0 V +178 295 V +177 0 V +178 295 V +178 0 V +177 295 V +178 0 V +178 0 V +178 0 V +177 0 V +178 0 V +4680 3397 TriD +4857 3397 TriD +5035 3692 TriD +5213 3692 TriD +5391 3987 TriD +5568 3987 TriD +5746 4282 TriD +5924 4282 TriD +6101 4577 TriD +6279 4577 TriD +6457 4577 TriD +6635 4577 TriD +6812 4577 TriD +6990 4577 TriD +6622 581 TriD +1.000 UL +LTb +770 4872 N +770 448 L +6220 0 V +0 4424 V +-6220 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/src/lte/doc/source/figures/lte-mcs-index.pdf b/src/lte/doc/source/figures/lte-mcs-index.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6f5c1969fa3ef7ad4611724f2541d2642570afe4 GIT binary patch literal 4450 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 literal 0 HcmV?d00001 From d02a7090e60d86a49cef1760c7dd13d79785dc01 Mon Sep 17 00:00:00 2001 From: mrequena Date: Fri, 20 May 2011 14:18:35 +0200 Subject: [PATCH 3/4] mcs index figure --- src/lte/doc/source/lte-testing.rst | 7 + src/lte/test/reference/lte-mcs-index.dat | 38 + src/lte/test/reference/lte-mcs-index.eps | 841 +++++++++++++++++++ src/lte/test/reference/lte-mcs-index.gnuplot | 43 +- src/lte/test/reference/lte-mcs-index.pdf | Bin 0 -> 4450 bytes src/lte/test/reference/lte-mcs-index.png | Bin 0 -> 13640 bytes 6 files changed, 890 insertions(+), 39 deletions(-) create mode 100644 src/lte/test/reference/lte-mcs-index.dat create mode 100644 src/lte/test/reference/lte-mcs-index.eps create mode 100644 src/lte/test/reference/lte-mcs-index.pdf create mode 100644 src/lte/test/reference/lte-mcs-index.png diff --git a/src/lte/doc/source/lte-testing.rst b/src/lte/doc/source/lte-testing.rst index ce07405a7..6cba1e916 100644 --- a/src/lte/doc/source/lte-testing.rst +++ b/src/lte/doc/source/lte-testing.rst @@ -96,6 +96,13 @@ The test passes if both the following conditions are verified: #. the SINR calculated by the UE corresponds to the value intended for the given test case within a tolerance of :math:`10^{-7}`. The tolerance is meant to account for the approximation errors typical of floating point arithmetic. This test condition acts as a system test of the SINR calculation. This is needed because the other test suites that deal with the SINR calculation are unit tests, and hence might not be able to detect system-level bugs in the SINR calculation. #. the MCS index chosen by the scheduler matches exactly with the MCS index in the test vector, determined using the above described procedure. +In the following figure, we see the modulation to be used depending on the MCS index. This mapping is defined in [R1-081483]_. + +.. figure:: figures/lte-mcs-index.* + :align: center + + Modulation depending on the SINR and MCS index + Round Robin scheduler performance diff --git a/src/lte/test/reference/lte-mcs-index.dat b/src/lte/test/reference/lte-mcs-index.dat new file mode 100644 index 000000000..d5df810c8 --- /dev/null +++ b/src/lte/test/reference/lte-mcs-index.dat @@ -0,0 +1,38 @@ +# SINR MCS_index +-2 0 +-1 0 +0 2 +1 2 +2 2 +3 4 +4 4 +5 6 +6 6 +7 8 +8 8 +9 10 + + +10 12 +11 12 +12 14 +13 14 +14 16 +15 18 +16 18 + + +17 20 +18 20 +19 22 +20 22 +21 24 +22 24 +23 26 +24 26 +25 28 +26 28 +27 28 +28 28 +29 28 +30 28 diff --git a/src/lte/test/reference/lte-mcs-index.eps b/src/lte/test/reference/lte-mcs-index.eps new file mode 100644 index 000000000..8f23b5620 --- /dev/null +++ b/src/lte/test/reference/lte-mcs-index.eps @@ -0,0 +1,841 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: lte-mcs-index.eps +%%Creator: gnuplot 4.2 patchlevel 6 +%%CreationDate: Fri May 20 13:08:10 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following 6 true/false flags may be edited by hand if required +% The unit line width may also be changed +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (lte-mcs-index.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.2 patchlevel 6 ) + /Author (Manuel Requena) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri May 20 13:08:10 2011) + /DOCINFO pdfmark +end +} ifelse +% +% Gnuplot Prolog Version 4.2 (August 2006) +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} bind def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +gnudict begin +gsave +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +1.000 UL +LTa +770 448 M +6220 0 V +stroke +LTb +770 448 M +63 0 V +6157 0 R +-63 0 V +stroke +686 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 1185 M +6220 0 V +stroke +LTb +770 1185 M +63 0 V +6157 0 R +-63 0 V +stroke +686 1185 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 1923 M +6220 0 V +stroke +LTb +770 1923 M +63 0 V +6157 0 R +-63 0 V +stroke +686 1923 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 2660 M +6220 0 V +stroke +LTb +770 2660 M +63 0 V +6157 0 R +-63 0 V +stroke +686 2660 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 15)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 3397 M +6220 0 V +stroke +LTb +770 3397 M +63 0 V +6157 0 R +-63 0 V +stroke +686 3397 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 20)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 4135 M +6220 0 V +stroke +LTb +770 4135 M +63 0 V +6157 0 R +-63 0 V +stroke +686 4135 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 25)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 4872 M +6220 0 V +stroke +LTb +770 4872 M +63 0 V +6157 0 R +-63 0 V +stroke +686 4872 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 30)] +] -46.7 MRshow +1.000 UL +LTb +1.000 UL +LTa +770 448 M +0 4424 V +stroke +LTb +770 448 M +0 63 V +0 4361 R +0 -63 V +stroke +770 308 M +[ [(Helvetica) 140.0 0.0 true true 0 (-5)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +1659 448 M +0 4424 V +stroke +LTb +1659 448 M +0 63 V +0 4361 R +0 -63 V +stroke +1659 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +2547 448 M +0 4424 V +stroke +LTb +2547 448 M +0 63 V +0 4361 R +0 -63 V +stroke +2547 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +3436 448 M +0 4424 V +stroke +LTb +3436 448 M +0 63 V +0 4361 R +0 -63 V +stroke +3436 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +4324 448 M +0 4424 V +stroke +LTb +4324 448 M +0 63 V +0 4361 R +0 -63 V +stroke +4324 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 15)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +5213 448 M +0 4424 V +stroke +LTb +5213 448 M +0 63 V +0 4361 R +0 -63 V +stroke +5213 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 20)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +6101 448 M +0 63 V +0 420 R +0 3941 V +stroke +LTb +6101 448 M +0 63 V +0 4361 R +0 -63 V +stroke +6101 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 25)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTa +6990 448 M +0 4424 V +stroke +LTb +6990 448 M +0 63 V +0 4361 R +0 -63 V +stroke +6990 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 30)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +770 4872 N +770 448 L +6220 0 V +0 4424 V +-6220 0 V +Z stroke +LCb setrgbcolor +280 2660 M +currentpoint gsave translate 90 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (MCS index)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3880 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (SINR [dB])] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UP +4.000 UL +LT0 +LTb +6339 861 M +[ [(Helvetica) 140.0 0.0 true true 0 (QPSK)] +] -46.7 MRshow +LT0 +6423 861 M +399 0 V +1303 448 M +178 0 V +178 295 V +177 0 V +178 0 V +178 295 V +177 0 V +178 295 V +178 0 V +178 295 V +177 0 V +178 295 V +1303 448 TriU +1481 448 TriU +1659 743 TriU +1836 743 TriU +2014 743 TriU +2192 1038 TriU +2369 1038 TriU +2547 1333 TriU +2725 1333 TriU +2903 1628 TriU +3080 1628 TriU +3258 1923 TriU +6622 861 TriU +1.000 UP +4.000 UL +LT1 +LTb +6339 721 M +[ [(Helvetica) 140.0 0.0 true true 0 (16QAM)] +] -46.7 MRshow +LT1 +6423 721 M +399 0 V +3436 2218 M +177 0 V +178 295 V +178 0 V +178 294 V +177 295 V +178 0 V +3436 2218 Box +3613 2218 Box +3791 2513 Box +3969 2513 Box +4147 2807 Box +4324 3102 Box +4502 3102 Box +6622 721 Box +1.000 UP +4.000 UL +LT2 +LTb +6339 581 M +[ [(Helvetica) 140.0 0.0 true true 0 (64QAM)] +] -46.7 MRshow +LT2 +6423 581 M +399 0 V +4680 3397 M +177 0 V +178 295 V +178 0 V +178 295 V +177 0 V +178 295 V +178 0 V +177 295 V +178 0 V +178 0 V +178 0 V +177 0 V +178 0 V +4680 3397 TriD +4857 3397 TriD +5035 3692 TriD +5213 3692 TriD +5391 3987 TriD +5568 3987 TriD +5746 4282 TriD +5924 4282 TriD +6101 4577 TriD +6279 4577 TriD +6457 4577 TriD +6635 4577 TriD +6812 4577 TriD +6990 4577 TriD +6622 581 TriD +1.000 UL +LTb +770 4872 N +770 448 L +6220 0 V +0 4424 V +-6220 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/src/lte/test/reference/lte-mcs-index.gnuplot b/src/lte/test/reference/lte-mcs-index.gnuplot index ab978d1c8..4d5bb7227 100644 --- a/src/lte/test/reference/lte-mcs-index.gnuplot +++ b/src/lte/test/reference/lte-mcs-index.gnuplot @@ -1,44 +1,9 @@ -set terminal postscript +set terminal postscript eps enhanced color set output 'lte-mcs-index.eps' set xlabel 'SINR [dB]' set ylabel 'MCS index' - set grid set key bottom right -plot '-' title 'QPSK' with linespoints lw 4 pt 8, '-' title '16QAM' with linespoints lw 4 pt 4, '-' title '64QAM' with linespoints lw 4 pt 10 --2 0 --1 0 -0 2 -1 2 -2 2 -3 4 -4 4 -5 6 -6 6 -7 8 -8 8 -9 10 -e -10 12 -11 12 -12 14 -13 14 -14 16 -15 18 -16 18 -e -17 20 -18 20 -19 22 -20 22 -21 24 -22 24 -23 26 -24 26 -25 28 -26 28 -27 28 -28 28 -29 28 -30 28 -e +plot 'lte-mcs-index.dat' index 0 using 1:2 title 'QPSK' with linespoints lw 4 pt 8,\ + 'lte-mcs-index.dat' index 1 using 1:2 title '16QAM' with linespoints lw 4 pt 4,\ + 'lte-mcs-index.dat' index 2 using 1:2 title '64QAM' with linespoints lw 4 pt 10 diff --git a/src/lte/test/reference/lte-mcs-index.pdf b/src/lte/test/reference/lte-mcs-index.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6f5c1969fa3ef7ad4611724f2541d2642570afe4 GIT binary patch literal 4450 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 literal 0 HcmV?d00001 From 8ce76b6165f0d5b29694be16bac1e6266257ac27 Mon Sep 17 00:00:00 2001 From: Manuel Requena Date: Fri, 20 May 2011 17:21:15 +0200 Subject: [PATCH 4/4] clean only generated files --- src/lte/doc/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lte/doc/Makefile b/src/lte/doc/Makefile index ba00dd98c..0bb8b3d0e 100644 --- a/src/lte/doc/Makefile +++ b/src/lte/doc/Makefile @@ -72,7 +72,8 @@ help: clean: -rm -rf $(BUILDDIR)/* - -rm -rf $(SOURCE) + -rm -f $(IMAGES_PNG) + -rm -f $(IMAGES_PDF) frag: pickle @if test ! -d $(BUILDDIR)/frag; then mkdir $(BUILDDIR)/frag; fi