diff --git a/paper/bibliography.bib b/paper/bibliography.bib new file mode 100644 index 000000000..d63c59014 --- /dev/null +++ b/paper/bibliography.bib @@ -0,0 +1,2135 @@ +@manual{ddninfmemory2017, + title = {Infinite Memory Engine}, + author = {DDN Storage}, + organization = {DDN Storage}, + month = 11, + year = 2017, + howpublished = {\url{http://www.ddn.com/download/resource_library/brochures/solid_state_storage/DDN-Storage-IME-Datasheet-v2.pdf}}, +} + + + +%/////////////////// + + +% ICON: Gassmann, A., and H.-J. Herzog, Q. J. R. Meteorol. S., 2008. : Towards a consistent numerical compressible non-hydrostatic model using generalized Hamiltonian tools. +% ICONGRID: Gassmann, A., J. Comp. Phys., 2011 : Inspection of hexagonal and triangular C-grid discretizations of the shallow water equations. +@techreport{miller2015silo, + title={{Silo/HDF5 and Portable, Scalable, Parallel I/O}}, + author={Miller, MC}, + year={2015}, + institution={Lawrence Livermore National Laboratory (LLNL), Livermore, CA} +} + +@inproceedings{Vishwanath:2011:TDM:2063384.2063409, + author = {Vishwanath, Venkatram and Hereld, Mark and Morozov, Vitali and Papka, Michael E.}, + title = {Topology-aware Data Movement and Staging for I/O Acceleration on Blue Gene/P Supercomputing Systems}, + booktitle = {Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis}, + series = {SC '11}, + year = {2011}, + isbn = {978-1-4503-0771-0}, + location = {Seattle, Washington}, + pages = {19:1--19:11}, + articleno = {19}, + numpages = {11}, + url = {http://doi.acm.org/10.1145/2063384.2063409}, + doi = {10.1145/2063384.2063409}, + acmid = {2063409}, + publisher = {ACM}, + address = {New York, NY, USA}, +} + + +@article{10.1109/SC.2016.49, +author = {Jay Lofstead and Ivo Jimenez and Carlos Maltzahn and Quincey Koziol and John Bent and Eric Barton}, +title = {DAOS and Friends: A Proposal for an Exascale Storage System}, +journal = {SC16: International Conference for High Performance Computing, Networking, Storage and Analysis}, +volume = {00}, +number = {}, +issn = {2167-4337}, +year = {2016}, +pages = {585-596}, +doi = {doi.ieeecomputersociety.org/10.1109/SC.2016.49}, +publisher = {IEEE Computer Society}, +address = {Los Alamitos, CA, USA}, +} + + +@misc{pmemio2017, + title = {{pmem.io - Persistent Memory Programming}}, + howpublished = {\url{http://pmem.io}}, + note = {Accessed: 2017-08-25} +} + + +@TECHREPORT{Bonwick03thezettabyte, + author = {Jeff Bonwick and Matt Ahrens and Val Henson and Mark Maybee and Mark Shellenbaum}, + title = {The Zettabyte File System}, + institution = {}, + year = {2003} +} + + +@article{Rodeh:2013:BLB:2501620.2501623, + author = {Rodeh, Ohad and Bacik, Josef and Mason, Chris}, + title = {BTRFS: The Linux B-Tree Filesystem}, + journal = {Trans. Storage}, + issue_date = {August 2013}, + volume = {9}, + number = {3}, + month = aug, + year = {2013}, + issn = {1553-3077}, + pages = {9:1--9:32}, + articleno = {9}, + numpages = {32}, + url = {http://doi.acm.org/10.1145/2501620.2501623}, + doi = {10.1145/2501620.2501623}, + acmid = {2501623}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {B-trees, RAID, concurrency, copy-on-write, filesystem, shadowing, snapshots}, +} + + +@inproceedings{Shvachko:2010:HDF:1913798.1914427, + author = {Shvachko, Konstantin and Kuang, Hairong and Radia, Sanjay and Chansler, Robert}, + title = {The Hadoop Distributed File System}, + booktitle = {Proceedings of the 2010 IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST)}, + series = {MSST '10}, + year = {2010}, + isbn = {978-1-4244-7152-2}, + pages = {1--10}, + numpages = {10}, + url = {http://dx.doi.org/10.1109/MSST.2010.5496972}, + doi = {10.1109/MSST.2010.5496972}, + acmid = {1914427}, + publisher = {IEEE Computer Society}, + address = {Washington, DC, USA}, +} + + + +@inproceedings{Schmuck:2002:GSF:1083323.1083349, + author = {Schmuck, Frank and Haskin, Roger}, + title = {GPFS: A Shared-Disk File System for Large Computing Clusters}, + booktitle = {Proceedings of the 1st USENIX Conference on File and Storage Technologies}, + series = {FAST '02}, + year = {2002}, + location = {Monterey, CA}, + articleno = {19}, + url = {http://dl.acm.org/citation.cfm?id=1083323.1083349}, + acmid = {1083349}, + publisher = {USENIX Association}, + address = {Berkeley, CA, USA}, +} + + + +@inproceedings{Weil:2006:CSH:1298455.1298485, + author = {Weil, Sage A. and Brandt, Scott A. and Miller, Ethan L. and Long, Darrell D. E. and Maltzahn, Carlos}, + title = {Ceph: A Scalable, High-performance Distributed File System}, + booktitle = {Proceedings of the 7th Symposium on Operating Systems Design and Implementation}, + series = {OSDI '06}, + year = {2006}, + isbn = {1-931971-47-1}, + location = {Seattle, Washington}, + pages = {307--320}, + numpages = {14}, + url = {http://dl.acm.org/citation.cfm?id=1298455.1298485}, + acmid = {1298485}, + publisher = {USENIX Association}, + address = {Berkeley, CA, USA}, +} + + +@misc{wos2017, + title = "WOS\textsuperscript\textregistered for Research", + howpublished = {\url{https://www.ddn.com/download/resource_library/whitepapers/archive_whitepapers/WOS_with_iRODS_whitepaper.pdf}}, + organization = "DDN", + year = "2017" +} + + +@manual{hpss2017, + title = {High-Performance Storage Systems Answering the Data Explosion with Massive Scale and Compelling Economics}, + author = {Jeskell Systems}, + organization = {Jeskell Systems, LLC}, + month = 4, + year = 2017, + howpublished = {\url{https://cdn2.hubspot.net/hubfs/403983/Jeskell%202017WP1%20HPSS%20High%20Performance%20Storage%20System.pdf?t=1495139256891}} +} + +@manual{craydatawarp2015, + title = {Cray XC40 DataWarp's applications I/O accelerator}, + author = {Cray Inc.}, + organization = {Cray Inc.}, + address = {Cray Inc. 901 Fifth Avenue, Suite 1000 Seattle, WA 98164}, + month = 10, + year = 2015, + howpublished = {\url{http://www.cray.com/sites/default/files/resources/CrayXC40-DataWarp.pdf}}, +} + +@manual{ddnime2015, + title = {Burst buffer \& beyond; I/O \& Application Acceleration Technology}, + author = {DDN Storage}, + organization = {DDN Storage}, + month = 9, + year = 2015, + howpublished = {\url{https://www.ddn.com/download/resource_library/brochures/technology/IME_FAQ.pdf}}, +} + +@manual{ddnmediascaler2016, + title = {MEDIAScalerTM; High-Performance Converged Media Storage for End2End Data Management}, + author = {DDN Storage}, + organization = {DDN Storage}, + month = 5, + year = 2016, + howpublished = {\url{https://www.ddn.com/download/resource_library/brochures/DDN-MEDIAScaler-Datasheet.pdf}}, +} + + +@inproceedings{he_io_2013, + address = {New York, NY, USA}, + series = {HPDC '13}, + title = {I/{{O Acceleration}} with {{Pattern Detection}}}, + isbn = {978-1-4503-1910-2}, + doi = {10.1145/2462902.2462909}, + abstract = {The I/O bottleneck in high-performance computing is becoming worse as application data continues to grow. In this work, we explore how patterns of I/O within these applications can significantly affect the effectiveness of the underlying storage systems and how these same patterns can be utilized to improve many aspects of the I/O stack and mitigate the I/O bottleneck. We offer three main contributions in this paper. First, we develop and evaluate algorithms by which I/O patterns can be efficiently discovered and described. Second, we implement one such algorithm to reduce the metadata quantity in a virtual parallel file system by up to several orders of magnitude, thereby increasing the performance of writes and reads by up to 40 and 480 percent respectively. Third, we build a prototype file system with pattern-aware prefetching and evaluate it to show a 46 percent reduction in I/O latency. Finally, we believe that efficient pattern discovery and description, coupled with the observed predictability of complex patterns within many high-performance applications, offers significant potential to enable many additional I/O optimizations.}, + timestamp = {2017-08-17T13:59:35Z}, + booktitle = {Proceedings of the {{22Nd International Symposium}} on {{High}}-Performance {{Parallel}} and {{Distributed Computing}}}, + publisher = {{ACM}}, + author = {He, Jun and Bent, John and Torres, Aaron and Grider, Gary and Gibson, Garth and Maltzahn, Carlos and Sun, Xian-He}, + year = {2013}, + keywords = {high performance com- puting,I/O,large-scale storage systems,pattern,PLFs,prefetching}, + pages = {25--36}, + file = {ACM Full Text PDF:/Users/BNL28/zotero-storage/storage/9D245H52/He et al. - 2013 - IO Acceleration with Pattern Detection.pdf:application/pdf} +} + + +@inproceedings{Bent:2009:PCF:1654059.1654081, + author = {Bent, John and Gibson, Garth and Grider, Gary and McClelland, Ben and Nowoczynski, Paul and Nunez, James and Polte, Milo and Wingate, Meghan}, + title = {PLFS: A Checkpoint Filesystem for Parallel Applications}, + booktitle = {Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis}, + series = {SC '09}, + year = {2009}, + isbn = {978-1-60558-744-8}, + location = {Portland, Oregon}, + pages = {21:1--21:12}, + articleno = {21}, + numpages = {12}, + url = {http://doi.acm.org/10.1145/1654059.1654081}, + doi = {10.1145/1654059.1654081}, + acmid = {1654081}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {check-pointing, high performance computing, parallel computing, parallel file systems and IO}, +} + + +@article{LA-UR-14-21447, + author = {Kettering, Brett M. and Torrez, Alfred and Bonnie, David J. and Shrader, David L.}, + title = {{Lustre and PLFS Parallel I/O Performance on a Cray XE6}}, + journal = {}, + year = {2014}, + publisher = {LANL}, +} + + +@unpublished{nextgenio2017, +title= {Analyzing I/O Performance on a NEXTGenIO Class System}, +author = {Holgler Brunst}, +year = {2017}, +note= {Lustre Users' Group meeting at Indiana University}, +URL= {http://www.nextgenio.eu/publications/analyzing-io-performance-nextgenio-class-system}, +} + +@ARTICLE{Eicker:203150, + author = {Eicker, Norbert and Lippert, Thomas and Moschny, Thomas and + Suarez, Estela}, + title = {{T}he {DEEP} {P}roject {A}n alternative approach to + heterogeneous cluster-computing in the many-core era}, + journal = {Concurrency and computation}, + volume = {28}, + number = {8}, + issn = {1532-0626}, + address = {Chichester}, + publisher = {Wiley}, + reportid = {FZJ-2015-05159}, + pages = {2394–2411}, + year = {2016}, + abstract = {Homogeneous cluster architectures, which used to dominate + high-performance computing (HPC), are challenged today by + heterogeneous approaches utilizing accelerator or + co-processor devices. The DEEP (Dynamical Exascale Entry + Platform) project is implementing a novel architecture for + HPC, in which a standard HPC cluster is directly connected + to a so-called ‘Booster’: a cluster of many-core + processors. By these means heterogeneity is organized + differently as in today's standard approach, where + accelerators are added to each node of the cluster. In order + to adapt application codes to this Cluster-Booster + architecture as seamless as possible, DEEP has developed a + complete programming environment. It integrates the + offloading functionality given by the Message Passing + Interface standard with an abstraction layer based on the + task-based OmpSs programming paradigm. This paper presents + the DEEP project with an emphasis on the DEEP programming + environment.}, + cin = {JSC}, + ddc = {004}, + cid = {I:(DE-Juel1)JSC-20090406}, + pnm = {513 - Supercomputer Facility (POF3-513) / DEEP - Dynamical + Exascale Entry Platform (287530)}, + pid = {G:(DE-HGF)POF3-513 / G:(EU-Grant)287530}, + typ = {PUB:(DE-HGF)16}, + UT = {WOS:000376263300006}, + doi = {10.1002/cpe.3562}, + url = {http://juser.fz-juelich.de/record/203150}, +} + + +@misc{optane2017, + title = {{The Intel Optane SSD DC P4800X (375GB) Review: Testing 3D XPoint Performance}}, + author = {Billy Tallis}, + howpublished = {\url{http://www.anandtech.com/show/11209/intel-optane-ssd-dc-p4800x-review-a-deep-dive-into-3d-xpoint-enterprise-performance/5}}, + year = {2017}, + note = {Accessed: 2017-07-12} +} + +@misc{nvmeintro2016, + title = {{An Introduction to NVMe}}, + author = {Hermann Strass}, + howpublished = {\url{http://www.seagate.com/files/www-content/product-content/ssd-fam/nvme-ssd/nytro-xf1440-ssd/_shared/docs/an-introduction-to-nvme-tp690-1-1605us.pdf}}, + year = {2016}, + note = {Accessed: 2017-07-12} +} + +@misc{3dxpoint2017, + title = {{How 3D XPoint Phase-Change Memory Works}}, + author = {Allyn Malventano}, + howpublished = {\url{https://www.pcper.com/reviews/Editorial/How-3D-XPoint-Phase-Change-Memory-Works}}, + year = {2017}, + note = {Accessed: 2017-07-12} +} + +@manual{adios_manual2016, + title = {{ADIOS 1.11 User’s Manual}}, + author = {{Norbert Podhorszki, Qing Liu, Jeremy Logan, Jingqing Mu, Hasan Abbasi, Jong-Youl Choi, Scott A. Klasky}}, + organization = {{OAK RIDGE NATIONAL LABORATORY}}, + address = {{Oak Ridge, Tennessee 37831-6070}}, + month = 11, + year = 2016, +} + + +@proceedings {2029, + title = {Adaptive IO System (ADIOS)}, + journal = {Cray Users Group (CUG) Workshop}, + year = {2008}, + month = {05/2008}, + url = {http://scholar.google.com/scholar?btnG=Search\%2BScholar\&as_q=\%22Adaptive\%2BIO\%2BSystem\%2BADIOS\%22\&as_sauthors=Jin\&as_occt=any\&as_epq=\&as_oq=\&as_eq=\&as_publication=\&as_ylo=\&as_yhi=\&as_sdtAAP=1\&as_sdtp=1}, + author = {C. Jin and S Klasky and S. Hodson and W. Yu and J. Lofstead and H. Abbasi and K. Schwan and M. Wolf and W. Liao and A. Choudhary and Parashar, Manish and C. Docan} +} + +@misc{hdf2017, + title = {{HDF}}, + howpublished = {\url{https://support.hdfgroup.org/HDF5/}}, + note = {Accessed: 2017-06-15} +} + +@manual{hdf5guide2015, + title = {{HDF5 User's Guide}}, + edition = {{1.11.x}}, + organization = {{The HDF5 Group}}, + year = 2015, +} + +@misc{netcdf2016, + title = {{NetCDF:FAQ}}, + year = {2016}, + howpublished = {\url{http://www.unidata.ucar.edu/software/netcdf/docs/faq.html#whatisit}}, + note = {Accessed: 2016-10-04} +} + +@manual{netcdf_manual2016, + title = {{ADIOS 1.11 User’s Manual}}, + author = {{Russ Rew, Glenn Davis, Steve Emmerson, Harvey Davies, and Ed Hartne}}, + edition = {Version 4.0-snapshot2008122406.1-beta2}, + organization = {{Unidata Program Center}}, + month = 12, + year = 2008, +} + + + + +@misc{vtkformats2017, + title={VTK File Formats for VTK Version 4.2}, + howpublished={\url{http://www2.mps.mpg.de/homes/leguebe/docs/file-formats.pdf}}, + note = {Accessed: 2017-07-12} +} + +@misc{kovexpd, + title={Kove XPD}, + author={Kove}, + howpublished={\url{http://kove.net/downloads/Kove-XPD-L3-datasheet.pdf}}, + note = {Accessed: 2017-08-24}, + year = 2017 +} + +@misc{nytro, + title={Flash Acceleration on HPC Storage}, + author={Seagate}, + howpublished={\url{http://files.gpfsug.org/presentations/2017/Manchester/SEAGATE_Flash_Acceleration_of_HPC_Storage.pdf}}, + note = {Accessed: 2017-08-24}, + year = 2017 +} + +@manual{grib2001, + title = {{Introduction to GRIB Edition1 and GRIB Edition 2}}, + organization = {{World Meteorological Organization}}, + month = 6, + year = 2001, +} + +@manual{grib2003, + title = {{FM 92 GRIB}}, + organization = {{World Meteorological Organization}}, + month = 11, + year = 2003, +} + +@manual{hdfs2008, + title = {{HDFS Architecture Guide}}, + author = {Dhruba Borthakur}, + organization = {{The Apache Software Foundation}}, + year = 2008, +} + + +@inproceedings{Li:2003:PNH:1048935.1050189, + author = {Li, Jianwei and Liao, Wei-keng and Choudhary, Alok and Ross, Robert and Thakur, Rajeev and Gropp, William and Latham, Rob and Siegel, Andrew and Gallagher, Brad and Zingale, Michael}, + title = {Parallel netCDF: A High-Performance Scientific I/O Interface}, + booktitle = {Proceedings of the 2003 ACM/IEEE Conference on Supercomputing}, + series = {SC '03}, + year = {2003}, + isbn = {1-58113-695-1}, + location = {Phoenix, AZ, USA}, + pages = {39--}, + url = {http://doi.acm.org/10.1145/1048935.1050189}, + doi = {10.1145/1048935.1050189}, + acmid = {1050189}, + publisher = {ACM}, + address = {New York, NY, USA}, +} + +@booklet{dataclay2015, + title = {{dataClay: towards usable and shareable storage}}, + author = {Toni Cortes and AnnaQueralt and Jonathan Martí and Jesús Labarta}, + howpublished = {\url{http://www.exascale.org/bdec/sites/www.exascale.org.bdec/files/whitepapers/dataClay%20at%20BDEC%20Barcelona.pdf}}, + address ={Barcelona Supercomputing Center (BSC-­‐CNS)}, + month = 1, + year = 2015, + note = {Accessed: 2017-07-12} +} + + +@techreport{mongodb2013, + author = {mongoDB}, + title = {{MongoDB: Bringing Online Big Data to Business Intelligence \& Analytics}}, + institution = {mongoDB}, + month = 12, + year = 2013, +} +@article{ichip, + title={{iCHIP: Plattform f{\"u}r NGFN Datenintegration}}, + author={Lawerenz, Christian and Eils, J{\"u}rgen and Eils, Roland}, + journal={GenomXPress}, + volume={2}, + pages={7--10}, + year={2007} +} + +@misc{hpss, + title={{HPSS Management Guide -- High Performance Storage Systems, Version 7.4}}, + author={IBM}, + year={2014}, + howpublished={\url{http://www.hpss-collaboration.org/documents/hpss742/management_guide.pdf}} +} + + + +@inproceedings{hennessy1986mars, + title={{MARS-The ECMWF Meteorological Archive and Retrieval System}}, + author={Hennessy, JT}, + booktitle={Proceedings, 66th annual meeting of the American Meteorological Society}, + year={1986} +} + +@inproceedings{raoult1997mars, + title={{The architecture of the new MARS server}}, + author={B. Raoult}, + booktitle={Sixth Workshop on Meteorological Operational Systems}, + month={November}, + year={1997} +} + +@article{madden2012databases, + title={From databases to big data}, + author={Madden, Sam}, + journal={IEEE Internet Computing}, + volume={16}, + number={3}, + pages={4--6}, + year={2012}, + publisher={IEEE} +} +@article{bigdata2016, + title = {{The Evolution of Big Data: NoSQL, Hadoop, Spark \& beyond}}, + author = {BDQ}, + journal = {BDQ}, + year = 2016, +} + + +@techreport{hadoop_hdfs2016, + author = {{Cloudera}}, + title = {{Hadoop and HDFS: Storage for next generationdata management}}, + institution = {{Cloudera}}, + year = 2016, +} + + +@inproceedings{Golan-Gueta:2015:SCL:2741948.2741973, + author = {Golan-Gueta, Guy and Bortnikov, Edward and Hillel, Eshcar and Keidar, Idit}, + title = {Scaling Concurrent Log-structured Data Stores}, + booktitle = {Proceedings of the Tenth European Conference on Computer Systems}, + series = {EuroSys '15}, + year = {2015}, + isbn = {978-1-4503-3238-5}, + location = {Bordeaux, France}, + pages = {32:1--32:14}, + articleno = {32}, + numpages = {14}, + url = {http://doi.acm.org/10.1145/2741948.2741973}, + doi = {10.1145/2741948.2741973}, + acmid = {2741973}, + publisher = {ACM}, + address = {New York, NY, USA}, +} + +@manual{netcdfcf_manual2011, + title = {{NetCDF Climate and Forecast (CF) Metadata Conventions}}, + author = {{Brian Eaton and Jonathan Gregory and Bob Drach and Karl Taylor and Steve Hankin and John Caron and Rich Signell and Phil Bentley and Greg Rappa and Heinke Höck and Alison Pamment}}, + month = 12, + year = 2011, +} + + + + + + +@STRING{proc = { Proceedings of the }} + +@STRING{asap = { IEEE International Conference on Application-specific Systems, Architectures and Processors (ASAP) }} +@STRING{asplos = { International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS) }} +@STRING{ccgrid = { IEEE International Symposium on Cluster Computing and the Grid (CCGrid)}} +@STRING{cluster = { IEEE International Conference on Cluster Computing (Cluster)}} +@STRING{ecrts = {Euromicro Conference on Real-Time Systems (ECRTS)}} +@STRING{fast = { USENIX Conference on File and Storage Technologies (FAST) }} +@STRING{focs = { IEEE Annual Symposium on Foundations of Computer Science (FOCS) }} +@STRING{grid = { IEEE/ACM International Conference on Grid Computing (Grid) }} +@STRING{hipc = { International Conference on High Performance Computing (HiPC) }} +@STRING{hotos = { Workshop on Hot Topics in Operating Systems (HotOS)}} +@STRING{icdcs = { IEEE International Conference on Distributed Computing Systems (ICDCS)}} +@STRING{icon = { IEEE International Conference on Networks (ICON) }} +@STRING{infocom = { IEEE International Conference on Computer and Communications (INFOCOM)}} +@STRING{ipdps = { IEEE International Parallel and Distributed Processing Symposium (IPDPS)}} +@STRING{iptps = { International workshop on Peer-To-Peer Systems (IPTPS)}} +@STRING{isorc = { IEEE International Symposium on Object-oriented Real-time distributed Computing (ISORC)}} +@STRING{lcn = {IEEE Conference on Local Computer Networks (LCN)}} +@STRING{mascots = { IEEE International Symposium on Modeling, Analysis, and Simulation (MASCOTS)}} +@STRING{msst = { IEEE Conference on Mass Storage Systems and Technologies (MSST)}} +@STRING{osdi = { Conference on Operating Systems Design and Implementation (OSDI)}} +@STRING{pdp = { Euromicro Conference on Parallel, Distributed and Network-based Processing (PDP)}} +@STRING{rtn = { International Workshop on Real-Time Networks (RTN)}} +@STRING{rtss = { IEEE Real-Time Systems Symposium (RTSS)}} +@STRING{sc = { ACM/IEEE Conference on High Performance Computing (SC)}} +@STRING{sigcomm = { ACM SIGCOMM Conference on Applications, Technologies, Architectures, and Protocols for Computer Communication }} +@STRING{sigmod = { ACM SIGMOD Conference on Management of Data }} +@STRING{snapi = { International Workshop on Storage Network Architecture and Parallel I/Os (SNAPI) }} +@STRING{soda = { ACM-SIAM Symposium on Discrete Algorithms (SODA) }} +@STRING{sosp = { ACM Symposium on Operating Systems Principles (SOSP) }} +@STRING{spaa = { ACM Symposium on Parallel Algorithms and Architectures (SPAA) }} +@STRING{stoc = { ACM Symposium on Theory of Computing (STOC) }} +@STRING{super = { ACM/IEEE Conference on Supercomputing }} +@STRING{vldb = { International Conference on Very Large Data Bases (VLDB) }} + +% booktitle = proc # " $12^{th}$ " # grid, + + + +% This file was created with JabRef 2.10. +% Encoding: MacRoman + + +@InProceedings{Bode2009a, + Title = {Software Architectural Design meets Security Engineering}, + Author = {Bode, Stephan and Fischer, Anja and K\"uhnhauser, Winfried E. and Riebisch, M.}, + Booktitle = {Proceedings 16th International Conference and Workshop on the Engineering of Computer Based Systems (ECBS 2009)}, + Year = {2009}, + Month = {April}, + Pages = {109-118}, + Publisher = {IEEE}, + + Abstract = {Security requirements strongly influence the architectural design of complex IT systems in a similar way as other non-functional requirements. Both security engineering as well as software engineering provide methods to deal with such requirements. However, there is still a critical gap concerning the integration of the methods of these separate fields. In this paper we close this gap with respect to security requirements by proposing a method that combines software engineering approaches with state-of-the-art security engineering principles. This method establishes an explicit alignment between the non-functional goal, the principles in the field of security engineering, and the implementation of a security architecture. The method aims at designing a system's security architecture based on a small, precisely defined, and application-specific trusted computing base. We illustrate this method by means of a case study which describes distributed enterprise resource planning systems using web services to implement business processes across company boundaries.}, + File = {:./literature/bode_SWADesignSecurityEng.pdf:PDF}, + Keywords = {software architecture, architectural design, security engineering, non-functional requirement, goal solution scheme}, + Owner = {Stephan}, + Timestamp = {2009.04.29}, + Url = {http://www.theoinf.tu-ilmenau.de/~sbode/publications/bode_SWADesignSecurityEng.pdf} +} + +@InProceedings{Bode2010, + Title = {Impact Evaluation for Quality-Oriented Architectural Decisions regarding Evolvability}, + Author = {Bode, Stephan and Riebisch, Matthias}, + Booktitle = {Proceedings 4th European Conference on Software Architecture, ECSA 2010}, + Year = {2010}, + Editor = {Babar, Muhammad and Gorton, Ian}, + Note = {(acceptance rate: 25\%)}, + Pages = {182-197}, + Publisher = {Springer Berlin / Heidelberg}, + Series = {LNCS}, + Volume = {6285}, + + Abstract = {Quality goals have to be under a special consideration during software architectural design. Evolvability constitutes a quality goal with a special relevance for business critical systems. Architectural patterns can significantly contribute to the satisfaction of quality goals. But architectural design decisions regarding these goals have to be made in a systematic, methodical way and concerning the patterns’ influence on quality properties. Unfortunately, pattern catalogs do not well support quality goal-oriented design decisions. This paper presents a systematic refinement and mapping of the quality goal evolvability to properties for good architectural design. A set of architectural patterns is evaluated regarding these properties. Furthermore, a calculation scheme is provided that enables the evaluation of the patterns to support design decisions. The results have been developed, revised, and evaluated in a series of applications based on industrial expertise.}, + Affiliation = {Ilmenau University of Technology, P.O. Box 10 05 65, 98684 Ilmenau, Germany}, + Doi = {10.1007/978-3-642-15114-9_15}, + File = {:./literature/BodeECSA2010.pdf:PDF}, + Keywords = {evolvability, architectural design, goal-oriented, impact evaluation, architectural pattern}, + Owner = {Stephan}, + Timestamp = {2010.10.04}, + Url = {http://dx.doi.org/10.1007/978-3-642-15114-9_15} +} + +@InProceedings{Bode2009, + Title = {Tracing Quality-Related Design Decisions in a Category-Driven Software Architecture.}, + Author = {Bode, Stephan and Riebisch, M.}, + Booktitle = {Software Engineering 2009}, + Year = {2009}, + + Address = {Bonn}, + Editor = {Peter Liggesmeyer and Gregor Engels and J\"{u}rgen M\"{u}nch and J\"{o}rg D\"{o}rr and Norman Riegel}, + Pages = {87-98}, + Publisher = {K\"{o}llen}, + Series = {LNI}, + Volume = {P-143}, + + Abstract = {Quality properties, so-called non-functional ones, have a fundamental influence on the development of software systems because they constitute the decisive factors for the design of a system's software architecture. They earn a similar consideration like functional properties. For a high evolvability of the software systems, traceability supports changes by facilitating design decisions, software comprehension and coverage checks. In this paper a method for design traceability is presented, in which links both for functional and quality properties are established in similar ways. A software category based design method is used for a better alignment between requirements and design. As a consequence, the method leads to a reduced number of traceability links. The method has been successfully applied in the development and partial reengineering of an e-commerce system.}, + File = {:./literature/bode_SE2009.pdf:PDF}, + Keywords = {traceability, non-functional requirement, quality requirements, usability, Quasar, design decisions, architectural design, software categories, goal solution scheme}, + Owner = {Stephan}, + Timestamp = {2009.04.29}, + Url = {http://www.theoinf.tu-ilmenau.de/~sbode/publications/bode_SE2009.pdf} +} + +@InProceedings{brcina2008architecting, + Title = {Architecting for evolvability by means of traceability and features}, + Author = {Brcina, Robert and Riebisch, Matthias}, + Booktitle = {Automated Software Engineering-Workshops, 2008. ASE Workshops 2008. 23rd IEEE/ACM International Conference on}, + Year = {2008}, + Organization = {IEEE}, + Pages = {72--81} +} + +@InProceedings{Gerdes:2015:DBT:2751491.2751495, + Title = {Decision Buddy: Tool Support for Constraint-Based Design Decisions During System Evolution}, + Author = {Gerdes, Sebastian and Soliman, Mohamed and Riebisch, Matthias}, + Booktitle = {Proceedings of the 1st International Workshop on Future of Software Architecture Design Assistants}, + Year = {2015}, + + Address = {New York, NY, USA}, + Pages = {13--18}, + Publisher = {ACM}, + Series = {FoSADA '15}, + + Acmid = {2751495}, + Doi = {10.1145/2751491.2751495}, + File = {:./literature/gerdes2015-fosada.pdf:PDF}, + ISBN = {978-1-4503-3438-9}, + Keywords = {architecture knowledge, constraints, design assistant, design decisions, software architecture, software evolution, tools}, + Location = {Montr\&\#233;al, QC, Canada}, + Numpages = {6}, + Owner = {Sebastian}, + Timestamp = {2016.02.11}, + Url = {http://doi.acm.org/10.1145/2751491.2751495} +} + +@Article{Giesecke2007, + Title = {Classifying architectural constraints as a basis for software quality assessment}, + Author = {Simon Giesecke and Wilhelm Hasselbring and Matthias Riebisch}, + Journal = {Advanced Engineering Informatics}, + Year = {2007}, + Number = {2}, + Pages = {169-179}, + Volume = {21}, + + Abstract = {Architectural styles and patterns have been studied since the inception of software architecture as a discipline. We generalise architectural styles, patterns and similar concepts by introducing the notion of architectural constraints. An architectural constraint is a vehicle for the reuse of architectural design knowledge and for the improvement of software quality. It may be used for improving architectural analyses of quality characteristics of the software system to be realised. We present the method for surveying the literature on architectural constraint concepts, and provide a taxonomy covering various definitions of architectural styles and patterns.}, + Address = {Amsterdam, The Netherlands, The Netherlands}, + Doi = {http://dx.doi.org/10.1016/j.aei.2006.11.002}, + File = {:./literature/ADVEI148.pdf:PDF}, + ISSN = {1474-0346}, + Keywords = {Architectural style, Architectural constraints; Software quality assessment}, + Owner = {Matthias}, + Publisher = {Elsevier Science Publishers B. V.}, + Timestamp = {2008.09.25}, + Url = {http://www.theoinf.tu-ilmenau.de/~Matthias/home/publ/ADVEI148.pdf} +} + +@MastersThesis{Neugebauer2011, + Title = {Softwarearchitektur-{E}ntwurf f\"{u}r {A}nwendungen auf {M}ehrkern-{P}rozessorarchitekturen}, + Author = {Stefan Neugebauer}, + School = {Ilmenau University of Technology}, + Year = {2011}, + Type = {{Diploma Thesis, supervisor Mathias Riebisch}}, + + Owner = {Stephan}, + Timestamp = {2011.02.09} +} + +@InProceedings{Pacholik2012, + Title = {Modelling Technical Constraints and Preconditions for Alternative Design Decisions}, + Author = {Pacholik, Alexander and Riebisch, Matthias}, + Booktitle = {Workshop Model-Based Development of Embedded Systems (MBEES2012)}, + Year = {2012}, + + File = {:./literature/Pacholik2010.pdf:PDF}, + Owner = {Sebastian}, + Timestamp = {2015.03.13} +} + +@InBook{riebisch2008-swhandbuch, + Title = {German Software Architecture Handbook (in German: Handbuch zur Software-Architektur). Editors: R. Reussner and W. Hasselbring}, + Author = {Matthias Riebisch}, + Chapter = {4 - Development of Architecture and Components (in German: Architektur- und Komponentenentwicklung)}, + Pages = {69-92}, + Publisher = {dpunkt}, + Year = {2008}, + Edition = {2nd}, + + Journal = {German Software Architecture Handbook (in German: Handbuch zur Software-Architektur)}, + Owner = {riebisch}, + Timestamp = {2016.02.19} +} + +@InProceedings{Riebisch2007, + Title = {Introducing Impact Analysis for Architectural Decisions}, + Author = {Matthias Riebisch and Sven Wohlfarth}, + Booktitle = {Proceedings 14th Annual IEEE International Conference and Workshop on the Engineering of Computer Based Systems (ECBS2007)}, + Year = {2007}, + Pages = {381-390}, + Publisher = {IEEE}, + + File = {:./literature/Riebisch2007-ImpactAnalysis.pdf:PDF}, + Owner = {Stephan}, + Timestamp = {2011.04.29} +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Publications UHAM / MPIM +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +@inbook{TETMPCACPM12, + author = {Timo Minartz and Daniel Molka and Julian Kunkel and Michael Knobloch and Michael Kuhn and Thomas Ludwig}, + title = {{Tool Environments to Measure Power Consumption and Computational Performance}}, + year = {2012}, + booktitle = {{Handbook of Energy-Aware and Green Computing}}, + publisher = {Chapman and Hall/CRC Press Taylor and Francis Group}, + address = {6000 Broken Sound Parkway NW, Boca Raton, FL 33487}, + chapter = {31}, + pages = {709--743}, + isbn = {978-1-4398-5040-4}, +} + +@inproceedings{MSAFMDKL15, + author = {Alexander Droste and Michael Kuhn and Thomas Ludwig}, + title = {{MPI-Checker - Static Analysis for MPI}}, + year = {2015}, + month = {11}, + booktitle = {{Proceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC}}, + publisher = {ACM}, + address = {New York, USA}, + series = {LLVM '15}, + conference = {SC15}, + location = {Austin, Texas, USA}, + isbn = {978-1-4503-4005-2}, + doi = {http://doi.acm.org/10.1145/2833157.2833159}, + url = {http://llvm-hpc2-workshop.github.io/}, +} + +@inbook{BDRADCMDPW15, + author = {Michael Lautenschlager and Panagiotis Adamidis and Michael Kuhn}, + title = {{Big Data Research at DKRZ – Climate Model Data Production Workflow}}, + year = {2015}, + booktitle = {{Big Data and High Performance Computing}}, + publisher = {IOS Press}, + series = {Advances in Parallel Computing}, + edition = {26}, + pages = {133--155}, + isbn = {978-1-61499-582-1}, + doi = {http://dx.doi.org/10.3233/978-1-61499-583-8-133}, + abstract = {The paper starts with a classification of climate modeling in Big Data and presents research activities in DKRZ's two basic climate modeling workflows, the climate model development and the climate model data production. Research emphasis in climate model development is on code optimization for efficient use of modern and future multi-core high performance computing architectures. Complementary research is related to increase of I/O bandwidth between compute nodes and hard discs as well as efficient use of storage resources. Research emphasis in climate model data production is on optimization of the end-to-end workflow in its different stages starting from climate model calculations over generation and storage of climate data products and ending in long-term archiving, interdisciplinary data utilization research data publication for integration of citable data entities in scientific literature articles.}, + url = {http://ebooks.iospress.nl/volume/big-data-and-high-performance-computing}, +} + +@inproceedings{ABPAOHANUL15, + author = {Christopher Bartz and Konstantinos Chasapis and Michael Kuhn and Petra Nerge and Thomas Ludwig}, + title = {{A Best Practice Analysis of HDF5 and NetCDF-4 Using Lustre}}, + year = {2015}, + month = {06}, + booktitle = {{High Performance Computing}}, + editor = {Julian Martin Kunkel and Thomas Ludwig}, + publisher = {Springer International Publishing}, + address = {Switzerland}, + series = {Lecture Notes in Computer Science}, + number = {9137}, + pages = {274--281}, + conference = {ISC 2015}, + location = {Frankfurt, Germany}, + isbn = {978-3-319-20118-4}, + issn = {0302-9743}, + doi = {http://dx.doi.org/10.1007/978-3-319-20119-1_20}, +} + +@inproceedings{CBDRTCOOOS14, + author = {Michael Kuhn and Konstantinos Chasapis and Manuel Dolz and Thomas Ludwig}, + title = {{Compression By Default - Reducing Total Cost of Ownership of Storage Systems}}, + year = {2014}, + month = {06}, + booktitle = {{Supercomputing}}, + editor = {Julian Martin Kunkel and Thomas Ludwig and Hans Werner Meuer}, + publisher = {Springer International Publishing}, + address = {Berlin, Heidelberg}, + series = {Lecture Notes in Computer Science}, + number = {8488}, + conference = {ISC 2014}, + location = {Leipzig, Germany}, + isbn = {978-3-319-07517-4}, + issn = {0302-9743}, + doi = {http://dx.doi.org/10.1007/978-3-319-07518-1}, +} + +@article{IBODIAMLB10, + author = {Olga Mordvinova and Thomas Ludwig and Christian Bartholomä}, + title = {{I/O Benchmarking of Data Intensive Applications}}, + year = {2010}, + publisher = {National Academy of Sciences of Ukraine}, + journal = {Problems in Programming}, + series = {2-3}, + pages = {107--115}, + issn = {1727-4907}, +} + +@inproceedings{PCOGHOAAMO11, + author = {Panagiotis Adamidis and Irina Fast and Thomas Ludwig}, + title = {{Performance Characteristics of Global High-Resolution Ocean (MPIOM) and Atmosphere (ECHAM6) Models on Large-Scale Multicore Cluster}}, + year = {2011}, + booktitle = {{Parallel Computing Technologies - 11th International Conference, PaCT 2011, Kazan, Russia, September 19-23, 2011. Proceedings}}, + editor = {Victor Malyshkin}, + publisher = {Springer}, + series = {Lecture Notes in Computer Science}, + number = {6873}, + pages = {390--403}, + conference = {PaCT}, + location = {Kazan, Russia}, + isbn = {978-3-642-23177-3}, + doi = {http://dx.doi.org/10.1007/978-3-642-23178-0}, + abstract = {Providing reliable estimates of possible anthropogenic climate +change is the subject of considerable scientific effort in the climate +modeling community. Climate model simulations are computationally +very intensive and the necessary computing capabilities can be provided +by supercomputers only. Although modern high performance computer +platforms can deliver a peak performance in the Petaflop/s range, most +of the existing Earth System Models (ESMs) are unable to exploit this +power. The main bottlenecks are the single core code performance, the +communication overhead, non-parallel code sections, in particular serial +I/O, and the static and dynamic load imbalance between model partitions. +The pure scalability of ESMs on massively parallel systems has +become a major problem in recent years. In this study we present results +from the performance and scalability analysis of the high-resolution +ocean model MPIOM and the atmosphere model ECHAM6 on the largescale +multicore cluster ”Blizzard” located at the German Climate Computing +Center (DKRZ). The issues outlined here are common to many +currently existing ESMs running on massively parallel computer platforms +with distributed memory.}, + url = {http://www.springerlink.com/content/978-3-642-23177-3/#section=956636&page=1&locus=0}, +} + +@misc{ICONDSL13, +author = {Raul Torres and Leonidas Lindarkis and Julian Kunkel and Thomas Ludwig}, +title = {{ICON DSL: A Domain Specific Language for Climate Modeling}}, +howpublished = {International Workshop on Domain-Specific Languages and High-Level Frameworks for High Performance Computing (WOLFHPC)}, +year = 2013, +} + + +@misc{GRIDTOOLS14, +author = {Mauro Bianco and Oliver Fuhrer}, +title = {{GRIDTools: The NEXT Tool for STENCIL on Structured Grids}}, +howpublished = {{Poster on the Platform for Advanced Scientific Computing (PASC)}}, +year = 2014, +} + +@inproceedings{pascoe2010, + title={{The CMIP5 archive architecture: A system for petabyte-scale distributed archival of climate model data}}, + author={Pascoe, Stephen and Cinquini, Luca and Lawrence, Bryan}, + booktitle={EGU General Assembly Conference Abstracts}, + volume={12}, + pages={8357}, + year={2010} +} + +@article{satoh2008, + title={{Nonhydrostatic icosahedral atmospheric model (NICAM) for global cloud resolving simulations}}, + author={Satoh, Masaki and Matsuno, Taro and Tomita, Hirofumi and Miura, Hiroaki and Nasuno, Tomoe and Iga, Shin-ichi}, + journal={Journal of Computational Physics}, + volume={227}, + number={7}, + pages={3486--3514}, + year={2008}, + publisher={Elsevier} +} + + + + + +@misc{STFCMTLK13, + author = {Raul Torres and Leonidas Lindarkis and Julian Kunkel}, + title = {{Poster: Source-to-Source Translation for Climate Models}}, + year = {2013}, + month = {June}, + location = {Leipzig, Germany}, + activity = {International Supercomputing Conference 2013}, + url = {http://www.isc-events.com/isc13_ap/presentationdetails.php?t=contribution&o=2117&a=select&ra=eventdetails}, +} + +@article{ESSAASOEKK14, + author = {Julian Kunkel and Michael Kuhn and Thomas Ludwig}, + title = {{Exascale Storage Systems -- An Analytical Study of Expenses}}, + year = {2014}, + month = {06}, + editor = {Jack Dongarra and Vladimir Voevodin}, + journal = {Supercomputing Frontiers and Innovations}, + series = {Volume 1, Number 1}, + pages = {116--134}, + url = {http://superfri.org/superfri/article/view/20}, +} + +@inproceedings{ELCOCDHWKL13, + author = {Nathanael Hübbe and Al Wegener and Julian Kunkel and Yi Ling and Thomas Ludwig}, + title = {{Evaluating Lossy Compression on Climate Data}}, + year = {2013}, + month = {06}, + booktitle = {{Supercomputing}}, + editor = {Julian Martin Kunkel and Thomas Ludwig and Hans Werner Meuer}, + publisher = {Springer}, + address = {Berlin, Heidelberg}, + series = {Lecture Notes in Computer Science}, + number = {7905}, + pages = {343--356}, + conference = {ISC 2013}, + location = {Leipzig, Germany}, + isbn = {978-3-642-38749-4}, + issn = {0302-9743}, + doi = {http://dx.doi.org/10.1007/978-3-642-38750-0_26}, +} + +@article{RTHFWMMAFI13, + author = {Nathanel Hübbe and Julian Kunkel}, + title = {{Reducing the HPC-Datastorage Footprint with MAFISC -- Multidimensional Adaptive Filtering Improved Scientific data Compression}}, + year = {2013}, + month = {05}, + publisher = {Springer}, + journal = {Computer Science - Research and Development}, + series = {Volume 28, Issue 2-3}, + pages = {231--239}, + url = {http://link.springer.com/article/10.1007/s00450-012-0222-4}, +} + +@inproceedings{SAIPFSCLRV09, + author = {P. Carns and S. Lang and R. Ross and M. Vilayannur and J. Kunkel and T. Ludwig}, + title = {{Small-file Access in Parallel File Systems}}, + year = {2009}, + booktitle = {{IPDPS '09: Proceedings of the 2009 IEEE International Symposium on Parallel and Distributed Processing}}, + publisher = {IEEE Computer Society}, + address = {Washington, DC, USA}, + pages = {1--11}, + conference = {IPDPS-09}, + organization = {University of Rome}, + location = {Rome, Italy}, + isbn = {978-1-4244-3751-1}, + doi = {http://dx.doi.org/10.1109/IPDPS.2009.5161029}, + abstract = {Today's computational science demands have resulted in ever larger parallel computers, and storage systems have grown to match these demands. Parallel file systems used in this environment are increasingly specialized to extract the highest possible performance for large I/O operations, at the expense of other potential workloads. While some applications have adapted to I/O best practices and can obtain good performance on these systems, the natural I/O patterns of many applications result in generation of many small files. These applications are not well served by current parallel file systems at very large scale. This paper describes five techniques for optimizing small-file access in parallel file systems for very large scale systems. These five techniques are all implemented in a single parallel file system (PVFS) and then systematically assessed on two test platforms. A microbenchmark and the mdtest benchmark are used to evaluate the optimizations at an unprecedented scale. We observe as +much as a 905% improvement in small-file create rates, 1,106% improvement in small-file stat rates, and 727% improvement in small-file removal rates, compared to a baseline PVFS configuration on a leadership computing platform using 16,384 cores.}, + url = {http://www.mcs.anl.gov/uploads/cels/papers/P1571.pdf}, +} + + +@article{TAESIISTAI11, + author = {J. Kunkel and T. Minartz and M. Kuhn and T. Ludwig}, + title = {{Towards an Energy-Aware Scientific I/O Interface -- Stretching the ADIOS Interface to Foster Performance Analysis and Energy Awareness}}, + year = {2011}, + publisher = {Springer}, + address = {Berlin / Heidelberg, Germany}, + journal = {Computer Science - Research and Development}, + series = {1}, + doi = {http://dx.doi.org/10.1007/s00450-011-0193-x}, + abstract = {Intelligently switching energy saving modes of CPUs, NICs and disks is mandatory to reduce the energy consumption. Hardware and operating system have a limited perspective of future performance demands, thus automatic control is suboptimal. However, it is tedious for a developer to control the hardware by himself. In this paper we propose an extension of an existing I/O interface which on the one hand is easy to use and on the other hand could steer energy saving modes more efficiently. Furthermore, the proposed modifications are beneficial for performance analysis and provide even more information to the I/O library to improve performance. When a user annotates the program with the proposed interface, I/O, communication and computation phases are labeled by the developer. Run-time behavior is then characterized for each phase, this knowledge could be then exploited by the new library.}, +} + +@article{DFSSTEMOIP09, + author = {M. Kuhn and J. Kunkel and T. Ludwig}, + title = {{Dynamic file system semantics to enable metadata optimizations in PVFS}}, + year = {2009}, + publisher = {John Wiley and Sons Ltd.}, + address = {Chichester, UK}, + journal = {Concurrency and Computation: Practice and Experience}, + series = {21-14}, + pages = {1775--1788}, + issn = {1532-0626}, + doi = {http://dx.doi.org/10.1002/cpe.1439}, + abstract = {Modern file systems maintain extensive metadata about stored files. While metadata typically is useful, there are situations when the additional overhead of such a design becomes a problem in terms of performance. This is especially true for parallel and cluster file systems, where every metadata operation is even more expensive due to their architecture. In this paper several changes made to the parallel cluster file system Parallel Virtual File System (PVFS) are presented. The changes target at the optimization of workloads with large numbers of small files. To improve the metadata performance, PVFS was modified such that unnecessary metadata is not managed anymore. Several tests with a large quantity of files were performed to measure the benefits of these changes. The tests have shown that common file system operations can be sped up by a factor of two even with relatively few changes.}, + url = {http://onlinelibrary.wiley.com/doi/10.1002/cpe.1439/pdf}, +} + +@inproceedings{SPEOSIOKKL12, + author = {M. Kuhn and J. Kunkel and T. Ludwig}, + title = {{Simulation-Aided Performance Evaluation of Server-Side Input/Output Optimizations}}, + year = {2012}, + booktitle = {{PDP 2012}}, + publisher = {IEEE}, + conference = {PDP 2012}, + organization = {Munich Network Management Team}, + location = {Garching, Germany}, + abstract = {The performance of parallel distributed file systems suffers from many clients executing a large number of operations in parallel, because the I/O subsystem can be easily overwhelmed by the sheer amount of incoming I/O operations. Many optimizations exist that try to alleviate this problem. Client-side optimizations perform preprocessing to minimize the amount of work the file servers have to do. Server-side optimizations use server-internal knowledge to improve performance. The HDTrace framework contains components to simulate, trace and visualize applications. It is used as a testbed to evaluate optimizations that could later be implemented in real-life projects. This paper compares existing client-side optimizations and newly implemented server-side optimizations and evaluates their usefulness for I/O patterns commonly found in HPC. Server-directed I/O chooses the order of non-contiguous I/O operations and tries to aggregate as many operations as possible to decrease the load on the I/O +subsystem and improve overall performance. The results show that server-side optimizations beat client-side optimizations in terms of performance for many use cases. Integrating such optimizations into parallel distributed file systems could alleviate the need for sophisticated client-side optimizations. Due to their additional knowledge of internal workflows server-side optimizations may be better suited to provide high performance in general.}, +} + +@article{CECOSDKMKL10, + author = {J. Kunkel and O. Mordvinova and M. Kuhn and T. Ludwig}, + title = {{Collecting Energy Consumption of Scientific Data}}, + year = {2010}, + publisher = {Springer}, + address = {Berlin / Heidelberg, Germany}, + journal = {Computer Science - Research and Development}, + series = {3}, + pages = {1--9}, + issn = {1865-2034}, + doi = {http://dx.doi.org/10.1007/s00450-010-0121-5}, + abstract = {In this paper the data life cycle management is extended by accounting for energy consumption during the life cycle of files. Information about the energy consumption of data not only allows to account for the correct costs of its life cycle, but also provides a feedback to the user and administrator, and improves awareness of the energy consumption of file I/O. Ideas to realize a storage landscape which determines the energy consumption for maintaining and accessing each file are discussed. We propose to add new extended attributes to file metadata which enable to compute the energy consumed during the life cycle of each file.}, + url = {http://www.springerlink.com/content/k3w8277867372413/fulltext.pdf}, +} + +@inproceedings{OFTCIKKTML12, + author = {M. Kuhn and J. Kunkel and Y. Tsujita and H. Muguruma and T. Ludwig}, + title = {{Optimizations for Two-Phase Collective I/O}}, + year = {2012}, + booktitle = {{ParCo 2011}}, + publisher = {IOS Press}, + address = {Amsterdam, New York, Tokio}, + conference = {ParCo 2011}, + organization = {University of Ghent, ELIS Department}, + location = {Ghent, Belgium}, + abstract = {The performance of parallel distributed file systems suffers from many clients executing a large number of operations in parallel, because the I/O subsystem can be easily overwhelmed by the sheer amount of incoming I/O operations. This, in turn, can slow down the whole distributed system. Many optimizations exist that try to alleviate this problem. Client-side optimizations perform preprocessing to minimize the amount of work the file servers have to do. Server-side optimizations use server-internal knowledge to improve performance. This paper provides an overview of existing client-side optimizations and presents new modifications of the Two-Phase protocol. Interleaved Two-Phase is a modification of ROMIO's Two-Phase protocol, which iterates over the file differently to reduce the number of seek operations on disk. Pipelined Two-Phase uses a pipelined scheme which overlaps I/O and communication phases to utilize the network and I/O subsystems concurrently.}, +} + +@inproceedings{IMTIPWAFRO12, + author = {J. Kunkel and T. Ludwig}, + title = {{IOPm -- Modeling the I/O Path with a Functional Representation of Parallel File System and Hardware Architecture}}, + year = {2012}, + booktitle = {{PDP 2012}}, + publisher = {IEEE}, + conference = {PDP 2012}, + organization = {Munich Network Management Team}, + location = {Garching, Germany}, + abstract = {The I/O path model (IOPm) is a graphical representation of the architecture of parallel file systems and the machine they are deployed on. With help of IOPm, file system and machine configurations can be quickly analyzed and distinguished from each other. Contrary to typical representations of the machine and file system architecture, the model visualizes the data or meta data path of client access. Abstract functionality of hardware components such as client and server nodes is covered as well as software aspects such as high-level I/O libraries, collective I/O and caches. Redundancy could be represented, too. Besides the advantage of a standardized representation for analysis IOPm assists to identify and communicate bottlenecks in the machine and file system configuration by highlighting performance relevant functionalities. By abstracting functionalities from the components they are hosted on, IOPm will enable to build interfaces to monitor file system activity.}, +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +@INPROCEEDINGS{DeVito2011, + author = {DeVito, Zachary and Joubert, Niels and Palacios, Francisco and Oakley, + Stephen and Medina, Montserrat and Barrientos, Mike and Elsen, Erich + and Ham, Frank and Aiken, Alex and Duraisamy, Karthik and Darve, + Eric and Alonso, Juan and Hanrahan, Pat}, + title = {Liszt: a domain specific language for building portable mesh-based + PDE solvers}, + booktitle = {Proceedings of 2011 International Conference for High Performance + Computing, Networking, Storage and Analysis}, + year = {2011}, + series = {SC '11}, + pages = {9:1--9:12}, + address = {New York, NY, USA}, + publisher = {ACM}, + acmid = {2063396}, + articleno = {9}, + doi = {10.1145/2063384.2063396}, + isbn = {978-1-4503-0771-0}, + keywords = {compiler analysis and program transformations, programming and runtime + environments for high performance and high throughput computing}, + location = {Seattle, Washington}, + numpages = {12}, + url = {http://doi.acm.org/10.1145/2063384.2063396} +} + + +Engelen2002 +@BOOK{Fowler2011, + title = {Domain-specific languages}, + publisher = {Addison-Wesley}, + year = {2011}, + editor = {Addison-Wesley}, + author = {Martin Fowler}, + owner = {torres}, + timestamp = {2013.08.30} +} + +@MISC{Messmer2012, + author = {Peter Messmer}, + title = {Porting COSMO to Hybrid Architectures}, + howpublished = {Programming weather, climate, and earth-system models on heterogeneous + multi-core platforms}, + month = {September}, + year = {2012}, + owner = {torres}, + timestamp = {2013.09.01} +} + +} + +@MISC{Zaengl2012, + author = {Guenther Zaengl}, + title = {The Icosahedral Nonhydrostatic (ICON) model: formulation of the dynamical + core and physics-dynamics coupling}, + howpublished = {Multiscale Numerics for the Atmosphere and Ocean at Isaac Newton + Institute for Mathematical Sciences}, + month = {September}, + year = {2012}, + owner = {torres}, + timestamp = {2013.09.01} +} + +@INPROCEEDINGS{Unat2011, + author = {Unat, Didem and Cai, Xing and Baden, Scott B.}, + title = {Mint: realizing CUDA performance in 3D stencil methods with annotated + C}, + booktitle = {Proceedings of the international conference on Supercomputing}, + year = {2011}, + series = {ICS '11}, + pages = {214--224}, + address = {New York, NY, USA}, + publisher = {ACM}, + acmid = {1995932}, + doi = {10.1145/1995896.1995932}, + isbn = {978-1-4503-0102-2}, + keywords = {automatic translation and optimization, cuda, parallel programming + model, stencil computation}, + location = {Tucson, Arizona, USA}, + numpages = {11}, + url = {http://doi.acm.org/10.1145/1995896.1995932} +} + +@misc{quinlan2013, + title={{ROSE compiler infrastructure}}, + author={Quinlan, Dan and Liao, C and Too, J and Matzke, R and Schordan, M}, + year={2013} +} + +@Article{Zaengl14, +author = {Z\"angl, G. and D. Reinert and P. R\'ipodas and M. Baldauf}, +title = {{The ICON (ICOsahedral Nonhydrostatic) modelling framework of DWD and MPI-M: Description of the nonhydrostatic dynamical core}}, +journal = {Quart. J. Roy. Meteorol. Soc.}, +year ={2014}, +volume = {140}, +OPTnumber ={}, +pages = {}, +OPTmonth = {}, +OPTnote = {}, +OPTannote = {}, +DOI = {10.1002/qj.2378} +} + +@inproceedings{Schmitt2014, + author = {Schmitt, Christian and Kuckuk, Sebastian and Hannig, Frank and K\"{o}stler, Harald and Teich, J\"{u}rgen}, + title = {{ExaSlang: A Domain-specific Language for Highly Scalable Multigrid Solvers}}, + booktitle = {Proceedings of the Fourth International Workshop on Domain-Specific Languages and High-Level Frameworks for High Performance Computing}, + series = {WOLFHPC '14}, + year = {2014}, + isbn = {978-1-4799-7020-9}, + location = {New Orleans, Louisiana}, + pages = {42--51}, + numpages = {10}, + url = {http://dx.doi.org/10.1109/WOLFHPC.2014.11}, + doi = {10.1109/WOLFHPC.2014.11}, + acmid = {2691171}, + publisher = {IEEE Press}, + address = {Piscataway, NJ, USA}, +} + +@incollection{Lopes14, +title={ExaStencils: Advanced Stencil-Code Engineering}, +year={2014}, +isbn={978-3-319-14312-5}, +booktitle={Euro-Par 2014: Parallel Processing Workshops}, +volume={8806}, +series={Lecture Notes in Computer Science}, +editor={Lopes, Luís and Žilinskas, Julius and Costan, Alexandru and Cascella, RobertoG. and Kecskemeti, Gabor and Jeannot, Emmanuel and Cannataro, Mario and Ricci, Laura and Benkner, Siegfried and Petit, Salvador and Scarano, Vittorio and Gracia, José and Hunold, Sascha and Scott, StephenL. and Lankes, Stefan and Lengauer, Christian and Carretero, Jesús and Breitbart, Jens and Alexander, Michael}, +doi={10.1007/978-3-319-14313-2_47}, +url={http://dx.doi.org/10.1007/978-3-319-14313-2_47}, +publisher={Springer International Publishing}, +author={Lengauer, Christian and Apel, Sven and Bolten, Matthias and Größlinger, Armin and Hannig, Frank and Köstler, Harald and Rüde, Ulrich and Teich, Jürgen and Grebhahn, Alexander and Kronawitter, Stefan and Kuckuk, Sebastian and Rittich, Hannah and Schmitt, Christian}, +pages={553-564}, +language={English} +} + +@misc{many14, + title={{NetCDF Climate and Forecast (CF) Metadata Conventions Version 1.7.2}}, + author={Eaton, Brian and Gregory, Jonathan and Drach, Bob and Taylor, Karl and Hankin, Steve and others}, + howpublished={Online \url{http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/build/cf-conventions.pdf}}, + year={2014} +} + +@inproceedings{logg2011fenics, + title={{The FEniCS project}}, + author={Logg, Anders and Dupont, T and Hoffman, J and Johnson, C and Kirby, RC and Larson, MG and Scott, LR}, + booktitle={Workshop on Multiscale Problems and Methods, Simula Research Laboratory}, + year={2011} +} + + +@misc{linardarkis15, + title={{The ICON Domain Specific Language}}, + author={Linardarkis, Leonidas and Kunkel, Julian and Körner, Ulrich}, + year=2015, + howpublished={Workshop for Compilers for Parallel Computing (CPC), Local proceedings (copy is available here: \url{http://goo.gl/PJ2DQa})} +} + + + + +@ARTICLE{Engelen2002, + author = {Robert A. Van Engelen}, + title = {{Atmol: A domain-specific language for atmospheric modeling}}, + journal = {The Journal of Computing and Information Technology}, + year = {2002}, + volume = {4}, + pages = {289-303} +} + + + +@inproceedings{Baker2014, + author = {Baker, Allison H. and Xu, Haiying and Dennis, John M. and Levy, Michael N. and Nychka, Doug and Mickelson, Sheri A. and Edwards, Jim and Vertenstein, Mariana and Wegener, Al}, + title = {{A Methodology for Evaluating the Impact of Data Compression on Climate Simulation Data}}, + booktitle = {Proceedings of the 23rd International Symposium on High-performance Parallel and Distributed Computing}, + series = {HPDC '14}, + year = {2014}, + isbn = {978-1-4503-2749-7}, + location = {Vancouver, BC, Canada}, + pages = {203--214}, + numpages = {12}, + url = {http://doi.acm.org/10.1145/2600212.2600217}, + doi = {10.1145/2600212.2600217}, + acmid = {2600217}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {data compression, high performance computing}, +} + + + +@inproceedings{Malaya:2010:PIU:1838574.1838585, + author = {N. Malaya and K.W. Schulz and R. Moser}, + title = {{Petascale I/O using HDF-5}}, + booktitle = {Proceedings of the 2010 TeraGrid Conference}, + series = {TG '10}, + year = {2010}, + isbn = {978-1-60558-818-6}, + location = {Pittsburgh, Pennsylvania}, + pages = {11:1--11:4}, + articleno = {11}, + numpages = {4}, + url = {http://doi.acm.org/10.1145/1838574.1838585}, + doi = {http://doi.acm.org/10.1145/1838574.1838585}, + acmid = {1838585}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {DNS, HPC, computational fluid dynamics, petascale I/O}, +} + +@inproceedings{Carns2009, + author = {P.H. Carns and R. Latham and R. Ross and K. Iskra and S. Lang and K. Riley}, + booktitle = {CLUSTER}, + pages = {1-10}, + publisher = {IEEE}, + title = {{24/7 Characterization of petascale I/O workloads}}, + url = {http://dblp.uni-trier.de/db/conf/cluster/cluster2009.html#CarnsLRILR09}, + year = 2009, + timestamp = {2010-03-08T00:00:00.000+0100}, + keywords = {dblp}, + ee = {http://dx.doi.org/10.1109/CLUSTR.2009.5289150}, + added-at = {2010-03-08T00:00:00.000+0100}, + description = {dblp}, + isbn = {978-1-4244-5012-1}, + biburl = {http://www.bibsonomy.org/bibtex/2e8a9f8996619d35d45d8af134aceca9b/dblp}, + date = {2010-03-08} +} + + +@inproceedings{HR11, + author = {M. Holze and N. Ritter}, + title = {{System Models for Goal Driven Self-Managment in Autonomic Databases}}, + booktitle = {Data \& Knowledge Engineering}, + year = 2011 +} + +@inproceedings{Ri+10, + author = {M. Von Riegen and M. Husemann and S. Fink and N. Ritter}, + title = {{Rule-based Coordination of Distributed Web Service Transactions}}, + booktitle = {IEEE Transactions on Services Computing}, + year = 2010 +} + +@article{isabela2, + title={{ISABELA for effective in situ compression of scientific data}}, + author={Lakshminarasimhan, S. and Shah, N. and Ethier, S. and Ku, S.H. and Chang, CS and Klasky, S. and Latham, R. and Ross, R. and Samatova, N.F.}, + journal={Concurrency and Computation: Practice and Experience}, + year={2012}, + publisher={Wiley Online Library} +} + +@inproceedings{schendel2012, + title={{ISOBAR preconditioner for effective and high-throughput lossless data compression}}, + author={Schendel, Eric R and Jin, Ye and Shah, Neil and Chen, Jackie and Chang, Choong-Seock and Ku, Seung-Hoe and Ethier, Stephane and Klasky, Scott and Latham, Robert and Ross, Robert and others}, + booktitle={Data Engineering (ICDE), 2012 IEEE 28th International Conference on}, + pages={138--149}, + year={2012}, + organization={IEEE} +} + +@techreport{grib2, + title={{Guide to the WMO Table Driven Code Form Used for the Representation and Exchange of Regularly Spaced Data In Binary Form: FM 92 GRIB Edition 2}}, + author={Dey, C. and others}, + institution={{World Meteorological Organization}}, + year={2007}, + url={http://www.wmo.int/pages/prog/www/WMOCodes/Guides/GRIB/GRIB2_062006.pdf} +} + + +@article{lindstrom2014, + title={{Fixed-Rate Compressed Floating-Point Arrays}}, + author={Lindstrom, Peter}, + year={2014}, + publisher={IEEE} +} + + +@inproceedings{ZeptoOS, + abstract = {{The ZeptoOS project is developing an open-source alternative to the proprietary software stacks available on contemporary massively parallel architectures. The aim is to enable computer science research on these architectures, enhance community collaboration, and foster innovation. In this paper, we introduce a component of ZeptoOS called ZOID---an I/O-forwarding infrastructure for architectures such as IBM Blue Gene that decouple file and socket I/O from the compute nodes, shipping those functions to dedicated I/O nodes. Through the use of optimized network protocols and data paths, as well as a multithreaded daemon running on I/O nodes, ZOID provides greater performance than does the stock infrastructure. We present a set of benchmark results that highlight the improvements. Crucially, the flexibility of our infrastructure is a vast improvement over the stock infrastructure, allowing users to forward data using custom-designed application interfaces, through an easy-to-use plug-in +mechanism. This capability is used for real-time telescope data transfers, extensively discussed in the paper. Plug-in--specific threads implement prefetching of data obtained over sockets from an input cluster and merge results from individual compute nodes before sending them out, significantly reducing required network bandwidth. This approach allows a ZOID version of the application to handle a larger number of subbands per I/O node, or even to bypass the input cluster altogether, plugging the input from remote receiver stations directly into the I/O nodes. Using the resources more efficiently can result in considerable savings.}}, + address = {New York, NY, USA}, + author = {K. Iskra, and J.W. Romein and K. Yoshii and P. Beckman}, + booktitle = {PPoPP '08: Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming}, + citeulike-article-id = {3378222}, + citeulike-linkout-0 = {http://portal.acm.org/citation.cfm?id=1345206.1345230}, + citeulike-linkout-1 = {http://dx.doi.org/10.1145/1345206.1345230}, + doi = {10.1145/1345206.1345230}, + isbn = {978-1-59593-795-7}, + keywords = {anl, io, parallel}, + location = {Salt Lake City, UT, USA}, + pages = {153--162}, + posted-at = {2008-10-06 00:59:28}, + priority = {2}, + publisher = {ACM}, + title = {{ZOID: I/O-forwarding infrastructure for petascale architectures}}, + url = {http://dx.doi.org/10.1145/1345206.1345230}, + year = {2008} +} + + +@inproceedings{Frings2009, + author = {W. Frings and F. Wolf and V. Petkov}, + title = {{Scalable massively parallel I/O to task-local files}}, + booktitle = {Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis}, + series = {SC '09}, + year = {2009}, + isbn = {978-1-60558-744-8}, + location = {Portland, Oregon}, + pages = {17:1--17:11}, + articleno = {17}, + numpages = {11}, + url = {http://doi.acm.org/10.1145/1654059.1654077}, + doi = {http://doi.acm.org/10.1145/1654059.1654077}, + acmid = {1654077}, + publisher = {ACM}, + address = {New York, NY, USA}, + abstract = {Parallel applications often store data in multiple task-local files, for example, to remember checkpoints, to circumvent memory limitations, or to record performance data. When operating at very large processor configurations, such applications often experience scalability limitations when the simultaneous creation of thousands of files causes metadataserver contention or simply when large file counts complicate file management or operations on those files even destabilize the file system. SIONlib is a parallel I/O library that addresses this problem by transparently mapping a large number of task-local files onto a small number of physical files via internal metadata handling and block alignment to ensure high performance. While requiring only minimal source code changes, SIONlib significantly reduces file creation overhead and simplifies file handling without penalizing read and write performance. We evaluate SIONlib's efficiency with up to 288 K tasks and report significant performance +improvements in two application scenarios.} +} + +@inproceedings{adaptiveio:sc10, + author = {Lofstead, J. and Zheng, F. and Liu, Q. and Klasky, S. and Oldfield, R. and Kordenbrock, T. and Schwan, K. and Wolf, M.}, + title = {Managing Variability in the IO Performance of Petascale Storage Systems}, + abstract = {Significant challenges exist for achieving +peak or even consistent levels of performance when +using IO systems at scale. They stem from sharing IO +system resources across the processes of single largescale +applications and/or multiple simultaneous programs +causing internal and external interference, which in turn, +causes substantial reductions in IO performance. This +paper presents interference effects measurements for two +different file systems at multiple supercomputing sites. +These measurements motivate developing a `managed' +IO approach using adaptive algorithms varying the IO +system workload based on current levels and use areas. +An implementation of these methods deployed for the +shared, general scratch storage system on Oak Ridge +National Laboratory machines achieves higher overall +performance and less variability in both a typical usage +environment and with artificially introduced levels +of `noise'. The latter serving to clearly delineate and +illustrate potential problems arising from shared system +usage and the advantages derived from actively managing +it.}, + booktitle = {SC '10: Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis}, + year = {2010}, + location = {New Orleans, Louisana}, + publisher = {ACM}, + address = {New York, NY, USA}, + } + +@INPROCEEDINGS{Lofstead2009, +author = {Lofstead, J. and Zheng, F. and Klasky, S. and Schwan, K.}, + title = {{Adaptable, Metadata Rich IO Methods for Portable High Performance IO}}, + booktitle = {Proceedings of IPDPS'09, May 25-29, Rome, Italy}, + year = {2009} +} + +@article{Lofstead2008, + author = {Lofstead, J. and Klasky, S. and Schwan K. and Podhorszki, N. and Jin, C.}, + title = {{Flexible IO and Integration for Scientific Codes Through The Adaptable IO System (ADIOS)}}, + booktitle = {CLADE 2008 at HPDC}, + year = {2008}, + month = {June}, + address = {Boston, Massachusetts}, + publisher = {ACM}, + url={http://www.adiosapi.org/uploads/clade110-lofstead.pdf} +} + + + + +@inproceedings{Prost2001, + author = {J.P. Prost and R. Treumann and R. Hedges B. Jia and A. Koniges}, + title = {{MPI-IO/GPFS, an optimized implementation of MPI-IO on top of GPFS}}, + booktitle = {Supercomputing '01: Proceedings of the 2001 ACM/IEEE conference on Supercomputing (CDROM)}, + year = {2001}, + isbn = {1-58113-293-X}, + pages = {17--17}, + location = {Denver, Colorado}, + doi = {http://doi.acm.org/10.1145/582034.582051}, + publisher = {ACM}, + address = {New York, NY, USA}, +} + +@techreport{mpi2009, + author = {{Message Passing Interface Forum}}, + title = {{MPI: A Message-Passing Interface Standard\\Version 2.2}}, + howpublished = {Online \url{http://www.mpi-forum.org/docs/mpi22-report/mpi22-report.htm}}, + year = {2009}, + month = {September}, +} + + +@article{Hartnett2008NetCDF, + author = {E. Hartnett and R. K. Rew}, + title = {{Experience With an Enhanced netCDF Data Model and Interface for Scientific Data Access}}, + journal = {24th Conference on Interactive Information Processing Systems (IIPS)}, + year = {2008}, +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% JENS DITTRICH's references +@article{hadooppp, + author = {J. Dittrich and J.-A. Quian{\'e}-Ruiz and A. Jindal and Y. Kargin and V. Setty and J. Schad}, + title = {{Hadoop++: Making a Yellow Elephant Run Like a Cheetah (Without It Even Noticing)}}, + journal = {PVLDB}, + volume = {3}, + number = {1}, + year = {2010}, + pages = {518-529}, +} + +@inproceedings{trojanlayout, + author = {A. Jindal and J.-A. Quian{\'e}-Ruiz and J. Dittrich}, + title = {{Trojan Data Layouts: Right Shoes for a Running Elephant}}, + booktitle = {Symposium on Cloud Computing (SOCC)}, + year = {2011} +} + +@inproceedings{octopus, + author = {J. Dittrich and A. Jindal}, + title = {{Towards a One Size Fits All Database Architecture}}, + booktitle = {CIDR}, + year = {2011}, + pages = {195-198, Outraegous Ideas and Vision Paper Award}, +} + +@inproceedings{ailamaki, + author = {S. Idreos and I. Alagiannis and R. Johnson and A. Ailamaki}, + title = {{Here are my Data Files. Here are my Queries. Where are my + Results?}}, + booktitle = {CIDR}, + year = {2011}, + pages = {57-68}, +} + +@article{pig, + author = {A. Gates and O. Natkovich and S. Chopra and P. Kamath and S. Narayanam and C. Olston and B. Reed and S. Srinivasan and U. Srivastava}, + title = {{Building a HighLevel Dataflow System on top of MapReduce: The Pig Experience}}, + journal = {PVLDB}, + volume = {2}, + number = {2}, + year = {2009}, + pages = {1414-1425}, +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EXASCALE + +@Misc{Barton2011, + title = {{Lustre at exascale}}, + howpublished = {Presentation}, + author = {E. Barton}, + institution = {Whamcloud}, + year = 2011, +} + +@Misc{ExaHDF5, + title = {{ExaHDF5: An I/O Platform for Exascale Data Models, Analysis and Performance}}, + author = {Prabhat and J. Wu and J. Chuo and M. Howison and E. W. Bethel and Q. Koziol and B. Palmer and K. Schuchardt}, + howpublished = {Project}, + year = 2011, +} + +@Misc{Shalf2010, +author = {J. Shalf}, +title = {{Exascale Computing Technology Challenges}}, +year = 2010, +month = Nov, +howpublished = {Presentation}, +conference = {{Petascale Data Storage Workshop at SC2010}}, +} + +@TECHREPORT{EESI2011, + author = {EESI}, + title = {D4.3 Working Group Report on Hardware roadmap, links and vendors}, + institution = {European Exascale Software Initiative}, + year = {2011} +} + +@Misc{Ishikawa2009, + title = {{Towards Exascale File I/O}}, + howpublished = {Presentation}, + author = {Y. Ishikawa}, + institution = {University of Tokyo, Japan}, + year = 2009, +} + +@article{chen2011towards, + title={{Towards Scalable I/O Architecture for Exascale Systems}}, + author={Y. Chen}, + year={2011} +} + +@article{FreitasStorageClassMemrory, + author = {R. F. Freitas and W. W. Wilcke}, + title = {Storage-class memory: The next storage system technology}, + journal = {IBM J. Res. Dev.}, + volume = {52}, + issue = {4}, + month = {July}, + year = {2008}, + issn = {0018-8646}, + pages = {439--447}, + numpages = {9}, + url = {http://dx.doi.org/10.1147/rd.524.0439}, + doi = {http://dx.doi.org/10.1147/rd.524.0439}, + acmid = {1462883}, + publisher = {IBM Corp.}, + address = {Riverton, NJ, USA}, +} + + +%%%%%%%%%%%% DATEISYSTEME + +@MISC{Lustre, +title = {Lustre}, +howpublished={\url{http://www.lustre.org/}} +} + +@MISC{PVFS, +title = {{PVFS}}, +howpublished={\url{http://www.pvfs.org/}} +} + +@MISC{OrangeFS, +title = {{OrangeFS}}, +howpublished={\url{http://www.orangefs.org/}} +} + +@MISC{CDI, +title = {{CDI}}, +howpublished={\url{https://code.zmaw.de/projects/cdi}} +} + +@MISC{ROMIO, +title = {{ROMIO}}, +howpublished={\url{http://www.mcs.anl.gov/research/projects/romio/}} +} + +@MISC{Raoult2011, +author = "B. Raoult", +title = {{Architecture of the new MARS server}}, +howpublished={\url{http://www.ecmwf.int/publications/manuals/mars/server.pdf}} +} + +%%% PROJEKTE + +@MISC{SCALUS, +title = {SCALUS}, +howpublished={\url{http://www.scalus.eu/}} +} +@article{Dubos2013Conservative, + author = {Dubos, T. and Kevlahan, N. K-R.}, + citeulike-article-id = {13339864}, + citeulike-linkout-0 = {http://dx.doi.org/10.1002/qj.2097}, + day = {1}, + journal = {\QJRMS}, + junk = {10.1002/qj.2097}, + junk = {http://dx.doi.org/10.1002/qj.2097}, + keywords = {adaptive, staggered}, + month = oct, + number = {677}, + pages = {1997--2020}, + posted-at = {2014-08-28 17:20:11}, + priority = {2}, + publisher = {John Wiley \& Sons, Ltd.}, + title = {A conservative adaptive wavelet method for the shallow-water equations on staggered grids}, + volume = {139}, + year = {2013} +} + +@article{Thuburn2014A, + author = {Thuburn, J. and Cotter, C. J. and Dubos, T.}, + citeulike-article-id = {13176763}, + citeulike-linkout-0 = {http://dx.doi.org/10.5194/gmd-7-909-2014}, + citeulike-linkout-1 = {http://www.geosci-model-dev.net/7/909/2014/}, + day = {20}, + journal = {\GMD}, + junk = {10.5194/gmd-7-909-2014}, + junk = {http://dx.doi.org/10.5194/gmd-7-909-2014}, + keywords = {cubed\_sphere, energy, enstrophy, finite\_diff, icosahedron, implicit, trisk}, + month = may, + number = {3}, + pages = {909--929}, + posted-at = {2014-05-20 14:41:23}, + priority = {2}, + publisher = {Copernicus Publications}, + title = {{A} mimetic, semi-implicit, forward-in-time, finite volume shallow water model: comparison of hexagonal-icosahedral and cubed-sphere grids}, + volume = {7}, + year = {2014} +} +@article{Dubos2014Equations, + author = {Dubos, Thomas and Tort, Marine}, + citeulike-article-id = {13248816}, + citeulike-linkout-0 = {http://journals.ametsoc.org/doi/abs/10.1175/MWR-D-14-00069.1}, + citeulike-linkout-1 = {http://dx.doi.org/10.1175/mwr-d-14-00069.1}, + day = {2}, + journal = {\MWR}, + junk = {10.1175/mwr-d-14-00069.1}, + junk = {http://dx.doi.org/10.1175/mwr-d-14-00069.1}, + keywords = {hamiltonian, vertical\_coord}, + month = jul, + number = {10}, + pages = {3860--3880}, + posted-at = {2014-11-19 13:16:48}, + priority = {2}, + publisher = {American Meteorological Society}, + title = {Equations of Atmospheric Motion in {Non-Eulerian} Vertical Coordinates: {Vector-Invariant} Form and {Quasi-Hamiltonian} Formulation}, + volume = {142}, + year = {2014} +} + +@article{Dubos2014Semihydrostatic, + author = {Dubos, Thomas and Voitus, Fabrice}, + citeulike-article-id = {13365503}, + citeulike-linkout-0 = {http://journals.ametsoc.org/doi/abs/10.1175/JAS-D-14-0080.1}, + citeulike-linkout-1 = {http://dx.doi.org/10.1175/jas-d-14-0080.1}, + day = {21}, + journal = {\JAS}, + junk = {10.1175/jas-d-14-0080.1}, + junk = {http://dx.doi.org/10.1175/jas-d-14-0080.1}, + keywords = {hamiltonian, soundproof, waves}, + month = aug, + posted-at = {2014-11-19 13:15:47}, + priority = {2}, + publisher = {American Meteorological Society}, + title = {A semi-hydrostatic theory of gravity-dominated compressible flow}, + year = {2014} +} + +@article{Dubos2015DYNAMICO, + author = {Dubos, T. and Dubey, S. and Tort, M. and Mittal, R. and Meurdesoif, Y. and Hourdin, F.}, + journal = {submitted to \GMD}, + title = {DYNAMICO, a hydrostatic icosahedral dynamical core designed for consistency and versatility}, + year = {2015} +} + +@article{Dubos2009Conservative, + address = {IPSL/Laboratoire de M\'{e}t\'{e}orologie Dynamique, \'{E}cole Polytechnique, Palaiseau, France}, + author = {Dubos, T.}, + citeulike-article-id = {6670323}, + citeulike-linkout-0 = {http://dx.doi.org/10.1002/qj.487}, + citeulike-linkout-1 = {http://www3.interscience.wiley.com/cgi-bin/abstract/122616751/ABSTRACT}, + issn = {1477-870X}, + journal = {\QJRMS}, + junk = {10.1002/qj.487}, + junk = {http://dx.doi.org/10.1002/qj.487}, + number = {644}, + pages = {1877--1889}, + posted-at = {2010-02-16 10:32:24}, + priority = {2}, + title = {A conservative Fourier-finite-element method for solving partial differential equations on the whole sphere}, + volume = {135}, + year = {2009} +} + +@inproceedings{maruyama-sc2011, + author = {Maruyama, Naoya and Nomura, Tatsuo and Sato, Kento and Matsuoka, Satoshi}, + title = {Physis: An Implicitly Parallel Programming Model for Stencil Computations on Large-scale GPU-accelerated Supercomputers}, + booktitle = {Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis}, + series = {SC '11}, + year = {2011}, + isbn = {978-1-4503-0771-0}, + location = {Seattle, Washington}, + pages = {11:1--11:12}, + articleno = {11}, + numpages = {12}, + url = {http://doi.acm.org/10.1145/2063384.2063398}, + doi = {10.1145/2063384.2063398}, + acmid = {2063398}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {application framework, domain specific languages, high perforamnce computing}, +} +@inproceedings{wahib-sc2014, + author = {Wahib, Mohamed and Maruyama, Naoya}, + title = {Scalable Kernel Fusion for Memory-bound GPU Applications}, + booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis}, + series = {SC '14}, + year = {2014}, + isbn = {978-1-4799-5500-8}, + location = {New Orleans, Louisana}, + pages = {191--202}, + numpages = {12}, + url = {http://dx.doi.org/10.1109/SC.2014.21}, + doi = {10.1109/SC.2014.21}, + acmid = {2683615}, + publisher = {IEEE Press}, + address = {Piscataway, NJ, USA}, +} + +@inproceedings{shimokawabe-sc2010, + author = {Shimokawabe, Takashi and Aoki, Takayuki and Muroi, Chiashi and Ishida, Junichi and Kawano, Kohei and Endo, Toshio and Nukada, Akira and Maruyama, Naoya and Matsuoka, Satoshi}, + title = {An 80-Fold Speedup, 15.0 TFlops Full GPU Acceleration of Non-Hydrostatic Weather Model ASUCA Production Code}, + booktitle = {Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis}, + series = {SC '10}, + year = {2010}, + isbn = {978-1-4244-7559-9}, + pages = {1--11}, + numpages = {11}, + url = {http://dx.doi.org/10.1109/SC.2010.9}, + doi = {10.1109/SC.2010.9}, + acmid = {1884659}, + publisher = {IEEE Computer Society}, + address = {Washington, DC, USA}, +} + +@inproceedings{shimokawabe-sc2011, + author = {Shimokawabe, Takashi and Aoki, Takayuki and Takaki, Tomohiro and Endo, Toshio and Yamanaka, Akinori and Maruyama, Naoya and Nukada, Akira and Matsuoka, Satoshi}, + title = {Peta-scale Phase-field Simulation for Dendritic Solidification on the TSUBAME 2.0 Supercomputer}, + booktitle = {Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis}, + series = {SC '11}, + year = {2011}, + isbn = {978-1-4503-0771-0}, + location = {Seattle, Washington}, + pages = {3:1--3:11}, + articleno = {3}, + numpages = {11}, + url = {http://doi.acm.org/10.1145/2063384.2063388}, + doi = {10.1145/2063384.2063388}, + acmid = {2063388}, + publisher = {ACM}, + address = {New York, NY, USA}, +} + +@inproceedings{shimokawabe-sc2014, + author = {Shimokawabe, Takashi and Aoki, Takayuki and Onodera, Naoyuki}, + title = {High-productivity Framework on GPU-rich Supercomputers for Operational Weather Prediction Code ASUCA}, + booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis}, + series = {SC '14}, + year = {2014}, + isbn = {978-1-4799-5500-8}, + location = {New Orleans, Louisana}, + pages = {251--261}, + numpages = {11}, + url = {http://dx.doi.org/10.1109/SC.2014.26}, + doi = {10.1109/SC.2014.26}, + acmid = {2683622}, + publisher = {IEEE Press}, + address = {Piscataway, NJ, USA}, +} + +@article{BQCD, + author = {M. Allalen and M. Brehm and H. Stüben}, + journal = {Computational Methods in Science and Technology}, + number = {2}, + pages = {69--75}, + title = {{Performance of Quantum Chromodynamics (QCD) Simulations on the SGI Altix}}, + volume = {14}, + year = {2008}, +} + +@inproceedings{Schwetzingen2010, + author = {M. Vetter and S. Olbrich}, + title = {Scalability Issues of In-situ Visualization in Parallel Simulation of Unsteady Flows}, + booktitle = {Proceedings of the CiHPC 2010 -- Competence in High-Performance Computing, Gauss Allianz Status Conference}, + year = {2012}, + location = {Schwetzingen, Germany}, + publisher = {Springer}, +} + +@inproceedings{Dagstuhl2008, + author = {S. Manten and M. Vetter and S. Olbrich}, + title = {Evaluation of a Scalable In-Situ Visualization System Approach in a Parallelized Computational Fluid Dynamics Application}, + booktitle = {Proc. of Dagstuhl-Seminar \emph{Virtual Realities}, Schloss Dagstuhl 2008}, + year = {2011}, + location = {Schloss Dagstuhl, Germany}, + publisher = {Springer}, +} + +@inproceedings{VIIP2009, + author = {S. Manten and S. Breuer and S. Olbrich}, + title = {Parallel isosurface extraction including polygon simplification via + self-adapting vertex clustering.}, + booktitle = {The Ninth IASTED International Conference on Visualization, + Imaging and Image Processing (VIIP-2009), Cambridge, UK}, + year = {2009}, + location = {Cambridge, UK}, +} + +@inproceedings{EGVE2008, + author = {M. Vetter and S. Manten and S. Olbrich}, + title = {Exploring unsteady flows by parallel extraction of propertyenhanced pathlines and interactive post-filtering}, + booktitle = {Proceedings of 14th Eurographics Symposium on Virtual Environments (EGVE 08), Eindhoven, The Netherlands}, + year = {2008}, + location = {Eindhoven, The Netherlands}, +} + +@inproceedings{HPCN2001, + author = {S. Olbrich and H. Pralle and S. Raasch}, + title = {Using Streaming and Parallelization Techniques for 3D Visualization in a High-Performance Computing and Networking Environment}, + booktitle = {HPCN 2001 – International Conference on High Performance Computing and Networking Europe, LNCS, Vol. 2110}, + year = {2001}, + location = {Amsterdam, The Netherlands}, + publisher = {Springer}, +} + + +@MISC{Hedges10comparisonof, + author = {Richard Hedges and Keith Fitzgerald and Mark Gary and D. Marc Stearman}, + title = {Comparison of leading parallel NAS file systems on commodity hardware. Poster at the Petascale Data Storage Workshop 2010. http://www.pdsi-scidac.org/events/PDSW10/ resources/posters/parallelNASFSs.pdf}, + year = {2010} +} + +@misc{loewe2012ior, + title={{IOR Benchmark}}, + author={Loewe, William and McLarty, T and Morrone, C}, + year={2012} +} + + +@inproceedings{howison2012tuning, + title={{Tuning HDF5 for Lustre File Systems}}, + author={Howison, Mark and Koziol, Quincey and Knaak, David and Mainzer, John and Shalf, John}, + booktitle={Workshop on Interfaces and Abstractions for Scientific Data Storage (IASDS10), Heraklion, Crete, Greece, September 24, 2010}, + year={2012} +} + + +@inproceedings{PEOTPAKL07, + author = {Julian Kunkel and Thomas Ludwig}, + title = {{Performance Evaluation of the PVFS2 Architecture}}, + year = {2007}, + booktitle = {{PDP '07: Proceedings of the 15th Euromicro International Conference on Parallel, Distributed and Network-Based Processing}}, + publisher = {IEEE Computer Society}, + address = {Washington, DC, USA}, + pages = {509--516}, + conference = {PDP-07}, + organization = {Euromicro}, + location = {Napoli, Italy}, + isbn = {0-7695-2784-1}, + doi = {http://dx.doi.org/10.1109/PDP.2007.65}, + abstract = {As the complexity of parallel file systems? software stacks increases it gets harder to reveal the reasons for performance bottlenecks in these software layers. This paper introduces a method which eliminates the influence of the physical storage on performance analysis in order to find these bottlenecks. Also, the influence of the hardware components on the performance is modeled to estimate the maximum achievable performance of a parallel file system. The paper focusses on the Parallel Virtual File System 2 (PVFS2) and shows results for the functionality file creation, small contiguous I/O requests and large contiguous I/O requests.}, +} + + +@article{wang2015development, + title={{Development of a Burst Buffer System for Data-Intensive Applications}}, + author={Wang, Teng and Oral, Sarp and Pritchard, Michael and Vasko, Kevin and Yu, Weikuan}, + journal={arXiv preprint 1505.01765}, + year={2015} +} + + +@article{thapaliyabballoc15, + title={{BBAlloc: Towards Allocation based Management of Burst Buffer Systems}}, + author={Thapaliya, Sagar and Bangalore, Purushotham and Lofstead, Jay and Mohror, Kathryn and Moody, Adam}, + year=2015 +} + + +@article{sapegin2016evaluation, + title={{Evaluation of in-memory storage engine for machine learning analysis of security events}}, + author={Sapegin, Andrey and Gawron, Marian and Jaeger, David and Cheng, Feng and Meinel, Christoph}, + journal={Concurrency and Computation: Practice and Experience}, + year={2016}, + publisher={Wiley Online Library} +} + +@inproceedings{foong2016storage, + title={Storage As Fast As Rest of the System}, + author={Foong, Annie and Hady, Frank}, + booktitle={2016 IEEE 8th International Memory Workshop (IMW)}, + pages={1--4}, + year={2016}, + organization={IEEE} +} + +@inproceedings{jose2011memcached, + title={{Memcached design on high performance RDMA capable interconnects}}, + author={Jose, Jithin and Subramoni, Hari and Luo, Miao and Zhang, Minjia and Huang, Jian and Wasi-ur-Rahman, Md and Islam, Nusrat S and Ouyang, Xiangyong and Wang, Hao and Sur, Sayantan and others}, + booktitle={2011 International Conference on Parallel Processing}, + pages={743--752}, + year={2011}, + organization={IEEE} +} + +@article{zhang2015memory, + title={{In-memory big data management and processing: A survey}}, + author={Zhang, Hao and Chen, Gang and Ooi, Beng Chin and Tan, Kian-Lee and Zhang, Meihui}, + journal={IEEE Transactions on Knowledge and Data Engineering}, + volume={27}, + number={7}, + pages={1920--1948}, + year={2015}, + publisher={IEEE} +} +@inproceedings{zaharia2012resilient, + title={{Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing}}, + author={Zaharia, Matei and Chowdhury, Mosharaf and Das, Tathagata and Dave, Ankur and Ma, Justin and McCauley, Murphy and Franklin, Michael J and Shenker, Scott and Stoica, Ion}, + booktitle={{Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation}}, + pages={2--2}, + year={2012}, + organization={USENIX Association} +} + +@article{romanus2015challenges, + title={{Challenges and considerations for utilizing burst buffers in high-performance computing}}, + author={Romanus, Melissa and Parashar, Manish and Ross, Robert B}, + journal={arXiv preprint 1509.05492}, + year={2015} +} + + +@inproceedings{wang2014burstmem, + title={{BurstMem: A high-performance burst buffer system for scientific applications}}, + author={Wang, Teng and Oral, Sarp and Wang, Yandong and Settlemyer, Brad and Atchley, Scott and Yu, Weikuan}, + booktitle={{Big Data (Big Data), 2014 IEEE International Conference on}}, + pages={71--79}, + year={2014}, + organization={IEEE} +} + + +@inproceedings{wickberg2012ramdisk, + title={{The RAMDISK storage accelerator: a method of accelerating I/O performance on HPC systems using RAMDISKs}}, + author={Wickberg, Tim and Carothers, Christopher}, + booktitle={Proceedings of the 2nd International Workshop on Runtime and Operating Systems for Supercomputers}, + pages={5}, + year={2012}, + organization={ACM} +} + + +@inproceedings{sato2014user, + title={{A user-level infiniband-based file system and checkpoint strategy for burst buffers}}, + author={Sato, Kento and Mohror, Kathryn and Moody, Adam and Gamblin, Todd and de Supinski, Bronis R and Maruyama, Naoya and Matsuoka, Satoshi}, + booktitle={Cluster, Cloud and Grid Computing (CCGrid), 2014 14th IEEE/ACM International Symposium on}, + pages={21--30}, + year={2014}, + organization={IEEE} +} + + +@INPROCEEDINGS{Liu12onthe, + author = {Ning Liu and Jason Cope and Philip Carns and Christopher Carothers and Robert Ross and Gary Grider and Adam Crume and Carlos Maltzahn}, + title = {{On the role of burst buffers in leadership-class storage systems}}, + booktitle = {In Proceedings of the 2012 IEEE Conference on Massive Data Storage}, + year = {2012} +} + + +@misc{kove:xpd:l2, + author = {KOVE}, + organization = {Kove Corporation}, + title = {{about xpress disk (xpd)}}, + howpublished = {\url{http://www.hamburgnet.de/products/kove/Kove-XPD-L3-4-datasheet.pdf}}, + year = {2015} +} + + +@misc{IBMFlash, + author = {IBM}, + title = {{Flash Storage}}, + howpublished = {\url{http://www-03.ibm.com/systems/storage/flash}}, +}note = {Accessed: 2016-07-12} + + +@misc{DDNIME, + author = {DDN}, + title = {{Worlds's most advanced application aware I/O acceleration solutions}}, + howpublished = {\url{http://www.ddn.com/products/infinite-memory-engine-ime14k}}, +} + + +@misc{HDF5Intro, + author = {{The HDF Group}}, + title = {{A Brief Introduction to Parallel HDF5}}, + howpublished = {\url{https://www.alcf.anl.gov/files/Parallel_HDF5_1.pdf}} +} + + +@misc{CrayDataWarp, +author = {Cray}, + title = {{CRAY XC40 DataWarp Applications I/O Accelerator}}, + howpublished = {\url{http://www.cray.com/sites/default/files/resources/CrayXC40-DataWarp.pdf}}, +} + + +@inproceedings{Thakur:1999:IMP:301816.301826, + author = {Thakur, Rajeev and Gropp, William and Lusk, Ewing}, + title = {{On Implementing MPI-IO Portably and with High Performance}}, + booktitle = {{Proceedings of the Sixth Workshop on I/O in Parallel and Distributed Systems}}, + year = {1999}, + pages = {23--32}, +} + + +# Fast Forward I/O and Storage +@inproceedings{lofstead:2014:ffsio-consistency, + title={{Consistency and Fault Tolerance Considerations for the Next Iteration of the DOE Fast Forward Storage and IO Project}}, + author={Lofstead, Jay and Jimenez, Ivo and Maltzahn, Carlos}, + booktitle={2014 43rd International Conference on Parallel Processing Workshops}, + pages={61--69}, + year={2014}, + organization={IEEE} +} + + +# Lustre on SSD-based vs. HDD-based HPC +@techreport{heben2014lfsperf, + author = {Michael Hebenstreit}, + title = {{Performance Evaluation of Intel SSD-Based Lustre Cluster File Systems at the Intel CRT-DC}}, + year = "2014", + institution = {{Intel}}, + url = "http://www.intel.com/content/dam/www/public/us/en/documents/performance-briefs/lustre-cluster-file-system-performance-evaluation.pdf" +} + + +@inproceedings{conf/bigdataconf/WangOWSAY14, +added-at = {2015-01-13T00:00:00.000+0100}, +author = {Wang, Teng and Oral, Sarp and Wang, Yandong and Settlemyer, Bradley W. and Atchley, Scott and Yu, Weikuan}, +biburl = {http://www.bibsonomy.org/bibtex/2f1124ca762ffb26b371bc2f181e66c4e/dblp}, +booktitle = {BigData Conference}, +crossref = {conf/bigdataconf/2014}, +editor = {Lin, Jimmy J. and Pei, Jian and Hu, Xiaohua and Chang, Wo and Nambiar, Raghunath and Aggarwal, Charu and Cercone, Nick and Honavar, Vasant and Huan, Jun and Mobasher, Bamshad and Pyne, Saumyadipta}, +ee = {http://dx.doi.org/10.1109/BigData.2014.7004215}, +interhash = {bb6fd0ff2fec2ca7ee45aec94ce25134}, +intrahash = {f1124ca762ffb26b371bc2f181e66c4e}, +isbn = {978-1-4799-5665-4}, +keywords = {dblp}, +pages = {71-79}, +publisher = {IEEE}, +timestamp = {2016-05-24T11:45:25.000+0200}, +title = {{BurstMem: A high-performance burst buffer system for scientific applications.}}, +url = {http://dblp.uni-trier.de/db/conf/bigdataconf/bigdataconf2014.html#WangOWSAY14}, +year = 2014 +} + + +# editor = {Taufer, Michela and Mohr, Bernd and Kunkel, Julian M.}, +@Inbook{Schenck2016, +author = {Schenck, Wolfram and El Sayed, Salem and Foszczynski, Maciej and Homberg, Wilhelm and Pleiter, Dirk}, +title = {{Early Evaluation of the Infinite Memory Engine'' Burst Buffer Solution}}, +bookTitle = {{High Performance Computing: ISC High Performance 2016 International Workshops, ExaComm, E-MuCoCoS, HPC-IODC, IXPUG, IWOPH, P\^{}3MA, VHPC, WOPSSS, Frankfurt, Germany, June 19--23, 2016, Revised Selected Papers}}, +year = "2016", +publisher = "Springer International Publishing", +address = "Cham", +pages = "604--615", +isbn = "978-3-319-46079-6", +doi = "10.1007/978-3-319-46079-6_41", +url = "http://dx.doi.org/10.1007/978-3-319-46079-6_41" +} + + +@misc{pdswDataWarp, +author = {Andrey Ovsyannikov and Melissa Romanus and Brian Van Straalen and Gunther H. Weber and David Trebotich}, +publisher = {PDSW}, +title = {{Scientific Workflows at DataWarp-Speed: Accelerated Data-Intensive Science using NERSC's Burst Buffer}}, +url = {http://conferences.computer.org/pdswdiscs/2016/papers/5216a001.pdf}, +year = 2016 +} + + + +@inproceedings{Wang:2016:EBF:3014904.3014997, + author = {Wang, Teng and Mohror, Kathryn and Moody, Adam and Sato, Kento and Yu, Weikuan}, +title = {{An Ephemeral Burst-buffer File System for Scientific Applications}}, +booktitle = {{Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis}}, +series = {SC '16}, +year = {2016}, +isbn = {978-1-4673-8815-3}, +pages = {69:1--69:12}, +articleno = {69}, +numpages = {12}, +url = {http://dl.acm.org/citation.cfm?id=3014904.3014997}, +acmid = {3014997}, +publisher = {IEEE Press}, +address = {Piscataway, NJ, USA}, +} diff --git a/paper/fig/ddn_ime.jpg b/paper/fig/ddn_ime.jpg new file mode 100644 index 000000000..5284a851f Binary files /dev/null and b/paper/fig/ddn_ime.jpg differ diff --git a/paper/fig/density.png b/paper/fig/density.png new file mode 100644 index 000000000..d759a5bd6 Binary files /dev/null and b/paper/fig/density.png differ diff --git a/paper/fig/dkrz-logo-eps-converted-to.pdf b/paper/fig/dkrz-logo-eps-converted-to.pdf new file mode 100644 index 000000000..7eb0a989c Binary files /dev/null and b/paper/fig/dkrz-logo-eps-converted-to.pdf differ diff --git a/paper/fig/dkrz-logo.eps b/paper/fig/dkrz-logo.eps new file mode 100644 index 000000000..7af670894 Binary files /dev/null and b/paper/fig/dkrz-logo.eps differ diff --git a/paper/fig/performance_benchtool_FS:lustre_IFACE:mpio_FILLED_notset_LIM:notset.png b/paper/fig/performance_benchtool_FS:lustre_IFACE:mpio_FILLED_notset_LIM:notset.png new file mode 100644 index 000000000..ca28e5865 Binary files /dev/null and b/paper/fig/performance_benchtool_FS:lustre_IFACE:mpio_FILLED_notset_LIM:notset.png differ diff --git a/paper/fig/performance_ior_fuse_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:12x8.png b/paper/fig/performance_ior_fuse_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:12x8.png new file mode 100644 index 000000000..c6a7d5653 Binary files /dev/null and b/paper/fig/performance_ior_fuse_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:12x8.png differ diff --git a/paper/fig/performance_ior_ime_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:6x8.png b/paper/fig/performance_ior_ime_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:6x8.png new file mode 100644 index 000000000..21b4ff559 Binary files /dev/null and b/paper/fig/performance_ior_ime_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:6x8.png differ diff --git a/paper/fig/performance_ior_lustre_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:12x8.png b/paper/fig/performance_ior_lustre_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:12x8.png new file mode 100644 index 000000000..1f57c9530 Binary files /dev/null and b/paper/fig/performance_ior_lustre_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:12x8.png differ diff --git a/paper/fig/performance_overview_rnd_ime.png b/paper/fig/performance_overview_rnd_ime.png new file mode 100644 index 000000000..9e0fa9b7a Binary files /dev/null and b/paper/fig/performance_overview_rnd_ime.png differ diff --git a/paper/fig/system3.png b/paper/fig/system3.png new file mode 100644 index 000000000..1c6091e73 Binary files /dev/null and b/paper/fig/system3.png differ diff --git a/paper/llncs2e/aliascnt.sty b/paper/llncs2e/aliascnt.sty new file mode 100644 index 000000000..452aa0e5d --- /dev/null +++ b/paper/llncs2e/aliascnt.sty @@ -0,0 +1,88 @@ +%% +%% This is file `aliascnt.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% aliascnt.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Project: aliascnt +%% Version: 2009/09/08 v1.3 +%% +%% Copyright (C) 2006, 2009 by +%% Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% http://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file aliascnt.dtx +%% and the derived files +%% aliascnt.sty, aliascnt.pdf, aliascnt.ins, aliascnt.drv. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{aliascnt}% + [2009/09/08 v1.3 Alias counter (HO)]% +\newcommand*{\newaliascnt}[2]{% + \begingroup + \def\AC@glet##1{% + \global\expandafter\let\csname##1#1\expandafter\endcsname + \csname##1#2\endcsname + }% + \@ifundefined{c@#2}{% + \@nocounterr{#2}% + }{% + \expandafter\@ifdefinable\csname c@#1\endcsname{% + \AC@glet{c@}% + \AC@glet{the}% + \AC@glet{theH}% + \AC@glet{p@}% + \expandafter\gdef\csname AC@cnt@#1\endcsname{#2}% + \expandafter\gdef\csname cl@#1\expandafter\endcsname + \expandafter{\csname cl@#2\endcsname}% + }% + }% + \endgroup +} +\newcommand*{\aliascntresetthe}[1]{% + \@ifundefined{AC@cnt@#1}{% + \PackageError{aliascnt}{% + `#1' is not an alias counter% + }\@ehc + }{% + \expandafter\let\csname the#1\expandafter\endcsname + \csname the\csname AC@cnt@#1\endcsname\endcsname + }% +} +\newcommand*{\AC@findrootcnt}[1]{% + \@ifundefined{AC@cnt@#1}{% + #1% + }{% + \expandafter\AC@findrootcnt\csname AC@cnt@#1\endcsname + }% +} +\def\AC@patch#1{% + \expandafter\let\csname AC@org@#1reset\expandafter\endcsname + \csname @#1reset\endcsname + \expandafter\def\csname @#1reset\endcsname##1##2{% + \csname AC@org@#1reset\endcsname{##1}{\AC@findrootcnt{##2}}% + }% +} +\RequirePackage{remreset} +\AC@patch{addto} +\AC@patch{removefrom} +\endinput +%% +%% End of file `aliascnt.sty'. diff --git a/paper/llncs2e/history.txt b/paper/llncs2e/history.txt new file mode 100644 index 000000000..83f6fe418 --- /dev/null +++ b/paper/llncs2e/history.txt @@ -0,0 +1,129 @@ +Version history for the LLNCS LaTeX2e class + + date filename version action/reason/acknowledgements +---------------------------------------------------------------------------- + 29.5.96 letter.txt beta naming problems (subject index file) + thanks to Dr. Martin Held, Salzburg, AT + + subjindx.ind renamed to subjidx.ind as required + by llncs.dem + + history.txt introducing this file + + 30.5.96 llncs.cls incompatibility with new article.cls of + 1995/12/20 v1.3q Standard LaTeX document class, + \if@openbib is no longer defined, + reported by Ralf Heckmann and Graham Gough + solution by David Carlisle + + 10.6.96 llncs.cls problems with fragile commands in \author field + reported by Michael Gschwind, TU Wien + + 25.7.96 llncs.cls revision a corrects: + wrong size of text area, floats not \small, + some LaTeX generated texts + reported by Michael Sperber, Uni Tuebingen + + 16.4.97 all files 2.1 leaving beta state, + raising version counter to 2.1 + + 8.6.97 llncs.cls 2.1a revision a corrects: + unbreakable citation lists, reported by + Sergio Antoy of Portland State University + +11.12.97 llncs.cls 2.2 "general" headings centered; two new elements + for the article header: \email and \homedir; + complete revision of special environments: + \newtheorem replaced with \spnewtheorem, + introduced the theopargself environment; + two column parts made with multicol package; + add ons to work with the hyperref package + +07.01.98 llncs.cls 2.2 changed \email to simply switch to \tt + +25.03.98 llncs.cls 2.3 new class option "oribibl" to suppress + changes to the thebibliograpy environment + and retain pure LaTeX codes - useful + for most BibTeX applications + +16.04.98 llncs.cls 2.3 if option "oribibl" is given, extend the + thebibliograpy hook with "\small", suggested + by Clemens Ballarin, University of Cambridge + +20.11.98 llncs.cls 2.4 pagestyle "titlepage" - useful for + compilation of whole LNCS volumes + +12.01.99 llncs.cls 2.5 counters of orthogonal numbered special + environments are reset each new contribution + +27.04.99 llncs.cls 2.6 new command \thisbottomragged for the + actual page; indention of the footnote + made variable with \fnindent (default 1em); + new command \url that copys its argument + + 2.03.00 llncs.cls 2.7 \figurename and \tablename made compatible + to babel, suggested by Jo Hereth, TU Darmstadt; + definition of \url moved \AtBeginDocument + (allows for url package of Donald Arseneau), + suggested by Manfred Hauswirth, TU of Vienna; + \large for part entries in the TOC + +16.04.00 llncs.cls 2.8 new option "orivec" to preserve the original + vector definition, read "arrow" accent + +17.01.01 llncs.cls 2.9 hardwired texts made polyglot, + available languages: english (default), + french, german - all are "babel-proof" + +20.06.01 splncs.bst public release of a BibTeX style for LNCS, + nobly provided by Jason Noble + +14.08.01 llncs.cls 2.10 TOC: authors flushleft, + entries without hyphenation; suggested + by Wiro Niessen, Imaging Center - Utrecht + +23.01.02 llncs.cls 2.11 fixed footnote number confusion with + \thanks, numbered institutes, and normal + footnote entries; error reported by + Saverio Cittadini, Istituto Tecnico + Industriale "Tito Sarrocchi" - Siena + +28.01.02 llncs.cls 2.12 fixed footnote fix ; error reported by + Chris Mesterharm, CS Dept. Rutgers - NJ + +28.01.02 llncs.cls 2.13 fixed the fix (programmer needs vacation) + +17.08.04 llncs.cls 2.14 TOC: authors indented, smart \and handling + for the TOC suggested by Thomas Gabel + University of Osnabrueck + +07.03.06 splncs.bst fix for BibTeX entries without year; patch + provided by Jerry James, Utah State University + +14.06.06 splncs_srt.bst a sorting BibTeX style for LNCS, feature + provided by Tobias Heindel, FMI Uni-Stuttgart + +16.10.06 llncs.dem 2.3 removed affiliations from \tocauthor demo + +11.12.07 llncs.doc note on online visibility of given e-mail address + +15.06.09 splncs03.bst new BibTeX style compliant with the current + requirements, provided by Maurizio "Titto" + Patrignani of Universita' Roma Tre + +30.03.10 llncs.cls 2.15 fixed broken hyperref interoperability; + patch provided by Sven Koehler, + Hamburg University of Technology + +15.04.10 llncs.cls 2.16 fixed hyperref warning for informatory TOC entries; + introduced \keywords command - finally; + blank removed from \keywordname, flaw reported + by Armin B. Wagner, IGW TU Vienna + +15.04.10 llncs.cls 2.17 fixed missing switch "openright" used by \backmatter; + flaw reported by Tobias Pape, University of Potsdam + +27.09.13 llncs.cls 2.18 fixed "ngerman" incompatibility; solution provided + by Bastian Pfleging, University of Stuttgart + +04.09.17 llncs.cls 2.19 introduced \orcidID command diff --git a/paper/llncs2e/llncs.cls b/paper/llncs2e/llncs.cls new file mode 100644 index 000000000..6a67a10a6 --- /dev/null +++ b/paper/llncs2e/llncs.cls @@ -0,0 +1,1209 @@ +% LLNCS DOCUMENT CLASS -- version 2.19 (04-Sep-2017) +% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science +% +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{llncs}[2017/09/04 v2.19 +^^J LaTeX document class for Lecture Notes in Computer Science] +% Options +\let\if@envcntreset\iffalse +\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} +\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} +\DeclareOption{oribibl}{\let\oribibl=Y} +\let\if@custvec\iftrue +\DeclareOption{orivec}{\let\if@custvec\iffalse} +\let\if@envcntsame\iffalse +\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} +\let\if@envcntsect\iffalse +\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} +\let\if@runhead\iffalse +\DeclareOption{runningheads}{\let\if@runhead\iftrue} + +\let\if@openright\iftrue +\let\if@openbib\iffalse +\DeclareOption{openbib}{\let\if@openbib\iftrue} + +% languages +\let\switcht@@therlang\relax +\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}} +\def\ds@francais{\def\switcht@@therlang{\switcht@francais}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ProcessOptions + +\LoadClass[twoside]{article} +\RequirePackage{multicol} % needed for the list of participants, index +\RequirePackage{aliascnt} + +\setlength{\textwidth}{12.2cm} +\setlength{\textheight}{19.3cm} +\renewcommand\@pnumwidth{2em} +\renewcommand\@tocrmarg{3.5em} +% +\def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu$}\hfill + \nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% + \par}% + \fi} +% +\def\switcht@albion{% +\def\abstractname{Abstract.} +\def\ackname{Acknowledgement.} +\def\andname{and} +\def\lastandname{\unskip, and} +\def\appendixname{Appendix} +\def\chaptername{Chapter} +\def\claimname{Claim} +\def\conjecturename{Conjecture} +\def\contentsname{Table of Contents} +\def\corollaryname{Corollary} +\def\definitionname{Definition} +\def\examplename{Example} +\def\exercisename{Exercise} +\def\figurename{Fig.} +\def\keywordname{{\bf Keywords:}} +\def\indexname{Index} +\def\lemmaname{Lemma} +\def\contriblistname{List of Contributors} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\mailname{{\it Correspondence to\/}:} +\def\noteaddname{Note added in proof} +\def\notename{Note} +\def\partname{Part} +\def\problemname{Problem} +\def\proofname{Proof} +\def\propertyname{Property} +\def\propositionname{Proposition} +\def\questionname{Question} +\def\remarkname{Remark} +\def\seename{see} +\def\solutionname{Solution} +\def\subclassname{{\it Subject Classifications\/}:} +\def\tablename{Table} +\def\theoremname{Theorem}} +\switcht@albion +% Names of theorem like environments are already defined +% but must be translated if another language is chosen +% +% French section +\def\switcht@francais{%\typeout{On parle francais.}% + \def\abstractname{R\'esum\'e.}% + \def\ackname{Remerciements.}% + \def\andname{et}% + \def\lastandname{ et}% + \def\appendixname{Appendice} + \def\chaptername{Chapitre}% + \def\claimname{Pr\'etention}% + \def\conjecturename{Hypoth\`ese}% + \def\contentsname{Table des mati\`eres}% + \def\corollaryname{Corollaire}% + \def\definitionname{D\'efinition}% + \def\examplename{Exemple}% + \def\exercisename{Exercice}% + \def\figurename{Fig.}% + \def\keywordname{{\bf Mots-cl\'e:}} + \def\indexname{Index} + \def\lemmaname{Lemme}% + \def\contriblistname{Liste des contributeurs} + \def\listfigurename{Liste des figures}% + \def\listtablename{Liste des tables}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}% + \def\notename{Remarque}% + \def\partname{Partie}% + \def\problemname{Probl\`eme}% + \def\proofname{Preuve}% + \def\propertyname{Caract\'eristique}% +%\def\propositionname{Proposition}% + \def\questionname{Question}% + \def\remarkname{Remarque}% + \def\seename{voir} + \def\solutionname{Solution}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tableau}% + \def\theoremname{Th\'eor\`eme}% +} +% +% German section +\def\switcht@deutsch{%\typeout{Man spricht deutsch.}% + \def\abstractname{Zusammenfassung.}% + \def\ackname{Danksagung.}% + \def\andname{und}% + \def\lastandname{ und}% + \def\appendixname{Anhang}% + \def\chaptername{Kapitel}% + \def\claimname{Behauptung}% + \def\conjecturename{Hypothese}% + \def\contentsname{Inhaltsverzeichnis}% + \def\corollaryname{Korollar}% +%\def\definitionname{Definition}% + \def\examplename{Beispiel}% + \def\exercisename{\"Ubung}% + \def\figurename{Abb.}% + \def\keywordname{{\bf Schl\"usselw\"orter:}} + \def\indexname{Index} +%\def\lemmaname{Lemma}% + \def\contriblistname{Mitarbeiter} + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Nachtrag}% + \def\notename{Anmerkung}% + \def\partname{Teil}% +%\def\problemname{Problem}% + \def\proofname{Beweis}% + \def\propertyname{Eigenschaft}% +%\def\propositionname{Proposition}% + \def\questionname{Frage}% + \def\remarkname{Anmerkung}% + \def\seename{siehe} + \def\solutionname{L\"osung}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tabelle}% +%\def\theoremname{Theorem}% +} + +% Ragged bottom for the actual page +\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil +\global\let\@textbottom\relax}} + +\renewcommand\small{% + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@}% + \belowdisplayskip \abovedisplayskip +} + +\frenchspacing +\widowpenalty=10000 +\clubpenalty=10000 + +\setlength\oddsidemargin {63\p@} +\setlength\evensidemargin {63\p@} +\setlength\marginparwidth {90\p@} + +\setlength\headsep {16\p@} + +\setlength\footnotesep{7.7\p@} +\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@} + +\setcounter{secnumdepth}{2} + +\newcounter {chapter} +\renewcommand\thechapter {\@arabic\c@chapter} + +\newif\if@mainmatter \@mainmattertrue +\newcommand\frontmatter{\cleardoublepage + \@mainmatterfalse\pagenumbering{Roman}} +\newcommand\mainmatter{\cleardoublepage + \@mainmattertrue\pagenumbering{arabic}} +\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi + \@mainmatterfalse} + +\renewcommand\part{\cleardoublepage + \thispagestyle{empty}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \null + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} + +\newcommand\chapter{\clearpage + \thispagestyle{empty}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% +% \vspace*{50\p@}% + {\centering + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \large\bfseries \@chapapp{} \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% +% \vspace*{50\p@}% + {\centering + \normalfont + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {12\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\large\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {8\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\normalsize\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\bfseries\boldmath}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {-12\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\itshape}} +\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use + \string\subparagraph\space with this class}\vskip0.5cm +You should not use \verb|\subparagraph| with this class.\vskip0.5cm} + +\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} + +\let\footnotesize\small + +\if@custvec +\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} +{\mbox{\boldmath$\textstyle#1$}} +{\mbox{\boldmath$\scriptstyle#1$}} +{\mbox{\boldmath$\scriptscriptstyle#1$}}} +\fi + +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} +\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.8pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.3pt}<\cr}}}}} +\def\bbbr{{\rm I\!R}} %reelle Zahlen +\def\bbbm{{\rm I\!M}} +\def\bbbn{{\rm I\!N}} %natuerliche Zahlen +\def\bbbf{{\rm I\!F}} +\def\bbbh{{\rm I\!H}} +\def\bbbk{{\rm I\!K}} +\def\bbbp{{\rm I\!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} + +\let\ts\, + +\setlength\leftmargini {17\p@} +\setlength\leftmargin {\leftmargini} +\setlength\leftmarginii {\leftmargini} +\setlength\leftmarginiii {\leftmargini} +\setlength\leftmarginiv {\leftmargini} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} + +\def\@listI{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@} +\let\@listi\@listI +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus2\p@ \@minus\p@} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@} + +\renewcommand\labelitemi{\normalfont\bfseries --} +\renewcommand\labelitemii{$\m@th\bullet$} + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}% + {{\contentsname}}} + \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} + \def\lastand{\ifnum\value{auco}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{auco}% + \lastand + \else + \unskip, + \fi}% + \@starttoc{toc}\if@restonecol\twocolumn\fi} + +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \addvspace{2em plus\p@}% % space above part line + \begingroup + \parindent \z@ + \rightskip \z@ plus 5em + \hrule\vskip5pt + \large % same size as for a contribution heading + \bfseries\boldmath % set line in boldface + \leavevmode % TeX command to enter horizontal mode. + #1\par + \vskip5pt + \hrule + \vskip1pt + \nobreak % Never break after part entry + \endgroup} + +\def\@dotsep{2} + +\let\phantomsection=\relax + +\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else +{}\fi} + +\def\addnumcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline + {\thechapter}#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmarkwop#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}% + +\def\@adcmk[#1]{\ifcase #1 \or +\def\@gtempa{\addnumcontentsmark}% + \or \def\@gtempa{\addcontentsmark}% + \or \def\@gtempa{\addcontentsmarkwop}% + \fi\@gtempa{toc}{chapter}% +} +\def\addtocmark{% +\phantomsection +\@ifnextchar[{\@adcmk}{\@adcmk[3]}% +} + +\def\l@chapter#1#2{\addpenalty{-\@highpenalty} + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + {\large\bfseries\boldmath#1}\ifx0#2\hfil\null + \else + \nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}% + \fi\par + \penalty\@highpenalty \endgroup} + +\def\l@title#1#2{\addpenalty{-\@highpenalty} + \addvspace{8pt plus 1pt} + \@tempdima \z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + #1\nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty \endgroup} + +\def\l@author#1#2{\addpenalty{\@highpenalty} + \@tempdima=15\p@ %\z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip + \textit{#1}\par + \penalty\@highpenalty \endgroup} + +\setcounter{tocdepth}{0} +\newdimen\tocchpnum +\newdimen\tocsecnum +\newdimen\tocsectotal +\newdimen\tocsubsecnum +\newdimen\tocsubsectotal +\newdimen\tocsubsubsecnum +\newdimen\tocsubsubsectotal +\newdimen\tocparanum +\newdimen\tocparatotal +\newdimen\tocsubparanum +\tocchpnum=\z@ % no chapter numbers +\tocsecnum=15\p@ % section 88. plus 2.222pt +\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt +\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt +\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt +\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt +\def\calctocindent{% +\tocsectotal=\tocchpnum +\advance\tocsectotal by\tocsecnum +\tocsubsectotal=\tocsectotal +\advance\tocsubsectotal by\tocsubsecnum +\tocsubsubsectotal=\tocsubsectotal +\advance\tocsubsubsectotal by\tocsubsubsecnum +\tocparatotal=\tocsubsubsectotal +\advance\tocparatotal by\tocparanum} +\calctocindent + +\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}} +\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} +\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} +\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} +\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} + +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}} + \@starttoc{lof}\if@restonecol\twocolumn\fi} +\def\l@figure{\@dottedtocline{1}{0em}{1.5em}} + +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}} + \@starttoc{lot}\if@restonecol\twocolumn\fi} +\let\l@table\l@figure + +\renewcommand\listoffigures{% + \section*{\listfigurename + \@mkboth{\listfigurename}{\listfigurename}}% + \@starttoc{lof}% + } + +\renewcommand\listoftables{% + \section*{\listtablename + \@mkboth{\listtablename}{\listtablename}}% + \@starttoc{lot}% + } + +\ifx\oribibl\undefined +\ifx\citeauthoryear\undefined +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \def\@biblabel##1{##1.} + \small + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw + {\let\protect\noexpand\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\newcount\@tempcntc +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@ifundefined + {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries + ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% + \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne + \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% + \else + \advance\@tempcntb\@ne + \ifnum\@tempcntb=\@tempcntc + \else\advance\@tempcntb\m@ne\@citeo + \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} +\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else + \@citea\def\@citea{,\,\hskip\z@skip}% + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else + {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else + \def\@citea{--}\fi + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} +\else +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def\@cite#1{#1}% + \def\@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} + \fi +\else +\@cons\@openbib@code{\noexpand\small} +\fi + +\def\idxquad{\hskip 10\p@}% space that divides entry from number + +\def\@idxitem{\par\hangindent 10\p@} + +\def\subitem{\par\setbox0=\hbox{--\enspace}% second order + \noindent\hangindent\wd0\box0}% index entry + +\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third + \noindent\hangindent\wd0\box0}% order index entry + +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} + +\renewenvironment{theindex} + {\@mkboth{\indexname}{\indexname}% + \thispagestyle{empty}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\par + \def\,{\relax\ifmmode\mskip\thinmuskip + \else\hskip0.2em\ignorespaces\fi}% + \normalfont\small + \begin{multicols}{2}[\@makeschapterhead{\indexname}]% + } + {\end{multicols}} + +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width 2truecm + \kern2.6\p@} + \newdimen\fnindent + \fnindent1em +\long\def\@makefntext#1{% + \parindent \fnindent% + \leftskip \fnindent% + \noindent + \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1} + +\long\def\@makecaption#1#2{% + \small + \vskip\abovecaptionskip + \sbox\@tempboxa{{\bfseries #1.} #2}% + \ifdim \wd\@tempboxa >\hsize + {\bfseries #1.} #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\def\fps@figure{htbp} +\def\fnum@figure{\figurename\thinspace\thefigure} +\def \@floatboxreset {% + \reset@font + \small + \@setnobreak + \@setminipage +} +\def\fps@table{htbp} +\def\fnum@table{\tablename~\thetable} +\renewenvironment{table} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@float{table}} + {\end@float} +\renewenvironment{table*} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@dblfloat{table}} + {\end@dblfloat} + +\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}}\begingroup + \@parboxrestore + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} + +% LaTeX does not provide a command to enter the authors institute +% addresses. The \institute command is defined here. + +\newcounter{@inst} +\newcounter{@auth} +\newcounter{auco} +\newdimen\instindent +\newbox\authrun +\newtoks\authorrunning +\newtoks\tocauthor +\newbox\titrun +\newtoks\titlerunning +\newtoks\toctitle + +\def\clearheadinfo{\gdef\@author{No Author Given}% + \gdef\@title{No Title Given}% + \gdef\@subtitle{}% + \gdef\@institute{No Institute Given}% + \gdef\@thanks{}% + \global\titlerunning={}\global\authorrunning={}% + \global\toctitle={}\global\tocauthor={}} + +\def\institute#1{\gdef\@institute{#1}} + +\def\institutename{\par + \begingroup + \parskip=\z@ + \parindent=\z@ + \setcounter{@inst}{1}% + \def\and{\par\stepcounter{@inst}% + \noindent$^{\the@inst}$\enspace\ignorespaces}% + \setbox0=\vbox{\def\thanks##1{}\@institute}% + \ifnum\c@@inst=1\relax + \gdef\fnnstart{0}% + \else + \xdef\fnnstart{\c@@inst}% + \setcounter{@inst}{1}% + \noindent$^{\the@inst}$\enspace + \fi + \ignorespaces + \@institute\par + \endgroup} + +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or + {\star\star\star}\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi}} + +\def\inst#1{\unskip$^{#1}$} +\def\orcidID#1{\unskip$^{[#1]}$} +\def\fnmsep{\unskip$^,$} +\def\email#1{{\tt#1}} +\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}% +\@ifpackageloaded{babel}{% +\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}% +\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}% +\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}% +\@ifundefined{extrasngerman}{}{\addto\extrasngerman{\switcht@deutsch}}% +}{\switcht@@therlang}% +\providecommand{\keywords}[1]{\par\addvspace\baselineskip +\noindent\keywordname\enspace\ignorespaces#1}% +} +\def\homedir{\~{ }} + +\def\subtitle#1{\gdef\@subtitle{#1}} +\clearheadinfo +% +%%% to avoid hyperref warnings +\providecommand*{\toclevel@author}{999} +%%% to make title-entry parent of section-entries +\providecommand*{\toclevel@title}{0} +% +\renewcommand\maketitle{\newpage +\phantomsection + \refstepcounter{chapter}% + \stepcounter{section}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{figure}{0} + \setcounter{table}{0} + \setcounter{equation}{0} + \setcounter{footnote}{0}% + \begingroup + \parindent=\z@ + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty}\@thanks +% + \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% + \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% + \instindent=\hsize + \advance\instindent by-\headlineindent + \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else + \addcontentsline{toc}{title}{\the\toctitle}\fi + \if@runhead + \if!\the\titlerunning!\else + \edef\@title{\the\titlerunning}% + \fi + \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}% + \ifdim\wd\titrun>\instindent + \typeout{Title too long for running head. Please supply}% + \typeout{a shorter form with \string\titlerunning\space prior to + \string\maketitle}% + \global\setbox\titrun=\hbox{\small\rm + Title Suppressed Due to Excessive Length}% + \fi + \xdef\@title{\copy\titrun}% + \fi +% + \if!\the\tocauthor!\relax + {\def\and{\noexpand\protect\noexpand\and}% + \protected@xdef\toc@uthor{\@author}}% + \else + \def\\{\noexpand\protect\noexpand\newline}% + \protected@xdef\scratch{\the\tocauthor}% + \protected@xdef\toc@uthor{\scratch}% + \fi + \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}% + \addcontentsline{toc}{author}{\toc@uthor}% + \if@runhead + \if!\the\authorrunning! + \value{@inst}=\value{@auth}% + \setcounter{@auth}{1}% + \else + \edef\@author{\the\authorrunning}% + \fi + \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}% + \ifdim\wd\authrun>\instindent + \typeout{Names of authors too long for running head. Please supply}% + \typeout{a shorter form with \string\authorrunning\space prior to + \string\maketitle}% + \global\setbox\authrun=\hbox{\small\rm + Authors Suppressed Due to Excessive Length}% + \fi + \xdef\@author{\copy\authrun}% + \markboth{\@author}{\@title}% + \fi + \endgroup + \setcounter{footnote}{\fnnstart}% + \clearheadinfo} +% +\def\@maketitle{\newpage + \markboth{}{}% + \def\lastand{\ifnum\value{@inst}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{@inst}% + \lastand + \else + \unskip, + \fi}% + \begin{center}% + \let\newline\\ + {\Large \bfseries\boldmath + \pretolerance=10000 + \@title \par}\vskip .8cm +\if!\@subtitle!\else {\large \bfseries\boldmath + \vskip -.65cm + \pretolerance=10000 + \@subtitle \par}\vskip .8cm\fi + \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% + \def\thanks##1{}\@author}% + \global\value{@inst}=\value{@auth}% + \global\value{auco}=\value{@auth}% + \setcounter{@auth}{1}% +{\lineskip .5em +\noindent\ignorespaces +\@author\vskip.35cm} + {\small\institutename} + \end{center}% + } + +% definition of the "\spnewtheorem" command. +% +% Usage: +% +% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} +% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} +% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} +% +% New is "cap_font" and "body_font". It stands for +% fontdefinition of the caption and the text itself. +% +% "\spnewtheorem*" gives a theorem without number. +% +% A defined spnewthoerem environment is used as described +% by Lamport. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@thmcountersep{} +\def\@thmcounterend{.} + +\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} + +% definition of \spnewtheorem with number + +\def\@spnthm#1#2{% + \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} +\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} + +\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@addtoreset{#1}{#3}% + \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand + \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spothm#1[#2]#3#4#5{% + \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\newaliascnt{#1}{#2}% + \expandafter\xdef\csname #1name\endcsname{#3}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}}} + +\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\refstepcounter{#1}% +\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} + +\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% + \ignorespaces} + +\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname + the#1\endcsname}{#5}{#3}{#4}\ignorespaces} + +\def\@spbegintheorem#1#2#3#4{\trivlist + \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} + +\def\@spopargbegintheorem#1#2#3#4#5{\trivlist + \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} + +% definition of \spnewtheorem* without number + +\def\@sthm#1#2{\@Ynthm{#1}{#2}} + +\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} + +\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} + +\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} + {#4}{#2}{#3}\ignorespaces} + +\def\@Begintheorem#1#2#3{#3\trivlist + \item[\hskip\labelsep{#2#1\@thmcounterend}]} + +\def\@Opargbegintheorem#1#2#3#4{#4\trivlist + \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} + +\if@envcntsect + \def\@thmcountersep{.} + \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} +\else + \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} + \if@envcntreset + \@addtoreset{theorem}{section} + \else + \@addtoreset{theorem}{chapter} + \fi +\fi + +%definition of divers theorem environments +\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} +\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} +\if@envcntsame % alle Umgebungen wie Theorem. + \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} +\else % alle Umgebungen mit eigenem Zaehler + \if@envcntsect % mit section numeriert + \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}} + \else % nicht mit section numeriert + \if@envcntreset + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{section}} + \else + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{chapter}}% + \fi + \fi +\fi +\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} +\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} +\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} +\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} +\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} +\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} +\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} +\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} +\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} +\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} +\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} +\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} +\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} +\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} + +\def\@takefromreset#1#2{% + \def\@tempa{#1}% + \let\@tempd\@elt + \def\@elt##1{% + \def\@tempb{##1}% + \ifx\@tempa\@tempb\else + \@addtoreset{##1}{#2}% + \fi}% + \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname + \expandafter\def\csname cl@#2\endcsname{}% + \@tempc + \let\@elt\@tempd} + +\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist + \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5} + \def\@Opargbegintheorem##1##2##3##4{##4\trivlist + \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }} + } + +\renewenvironment{abstract}{% + \list{}{\advance\topsep by0.35cm\relax\small + \leftmargin=1cm + \labelwidth=\z@ + \listparindent=\z@ + \itemindent\listparindent + \rightmargin\leftmargin}\item[\hskip\labelsep + \bfseries\abstractname]} + {\endlist} + +\newdimen\headlineindent % dimension for space between +\headlineindent=1.166cm % number and text of headings. + +\def\ps@headings{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \leftmark\hfil} + \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\def\ps@titlepage{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \hfil} + \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\if@runhead\ps@headings\else +\ps@empty\fi + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\endinput +%end of file llncs.cls diff --git a/paper/llncs2e/llncs.dem b/paper/llncs2e/llncs.dem new file mode 100644 index 000000000..3f4ec4b47 --- /dev/null +++ b/paper/llncs2e/llncs.dem @@ -0,0 +1,1098 @@ +% This is LLNCS.DEM the demonstration file of +% the LaTeX macro package from Springer-Verlag +% for Lecture Notes in Computer Science, +% version 2.4 for LaTeX2e as of 16. April 2010 +% +\documentclass{llncs} +% +\usepackage{makeidx} % allows for indexgeneration +% +\begin{document} +% +\frontmatter % for the preliminaries +% +\pagestyle{headings} % switches on printing of running heads +\addtocmark{Hamiltonian Mechanics} % additional mark in the TOC +% +\chapter*{Preface} +% +This textbook is intended for use by students of physics, physical +chemistry, and theoretical chemistry. The reader is presumed to have a +basic knowledge of atomic and quantum physics at the level provided, for +example, by the first few chapters in our book {\it The Physics of Atoms +and Quanta}. The student of physics will find here material which should +be included in the basic education of every physicist. This book should +furthermore allow students to acquire an appreciation of the breadth and +variety within the field of molecular physics and its future as a +fascinating area of research. + +For the student of chemistry, the concepts introduced in this book will +provide a theoretical framework for that entire field of study. With the +help of these concepts, it is at least in principle possible to reduce +the enormous body of empirical chemical knowledge to a few basic +principles: those of quantum mechanics. In addition, modern physical +methods whose fundamentals are introduced here are becoming increasingly +important in chemistry and now represent indispensable tools for the +chemist. As examples, we might mention the structural analysis of +complex organic compounds, spectroscopic investigation of very rapid +reaction processes or, as a practical application, the remote detection +of pollutants in the air. + +\vspace{1cm} +\begin{flushright}\noindent +April 1995\hfill Walter Olthoff\\ +Program Chair\\ +ECOOP'95 +\end{flushright} +% +\chapter*{Organization} +ECOOP'95 is organized by the department of Computer Science, Univeristy +of \AA rhus and AITO (association Internationa pour les Technologie +Object) in cooperation with ACM/SIGPLAN. +% +\section*{Executive Commitee} +\begin{tabular}{@{}p{5cm}@{}p{7.2cm}@{}} +Conference Chair:&Ole Lehrmann Madsen (\AA rhus University, DK)\\ +Program Chair: &Walter Olthoff (DFKI GmbH, Germany)\\ +Organizing Chair:&J\o rgen Lindskov Knudsen (\AA rhus University, DK)\\ +Tutorials:&Birger M\o ller-Pedersen\hfil\break +(Norwegian Computing Center, Norway)\\ +Workshops:&Eric Jul (University of Kopenhagen, Denmark)\\ +Panels:&Boris Magnusson (Lund University, Sweden)\\ +Exhibition:&Elmer Sandvad (\AA rhus University, DK)\\ +Demonstrations:&Kurt N\o rdmark (\AA rhus University, DK) +\end{tabular} +% +\section*{Program Commitee} +\begin{tabular}{@{}p{5cm}@{}p{7.2cm}@{}} +Conference Chair:&Ole Lehrmann Madsen (\AA rhus University, DK)\\ +Program Chair: &Walter Olthoff (DFKI GmbH, Germany)\\ +Organizing Chair:&J\o rgen Lindskov Knudsen (\AA rhus University, DK)\\ +Tutorials:&Birger M\o ller-Pedersen\hfil\break +(Norwegian Computing Center, Norway)\\ +Workshops:&Eric Jul (University of Kopenhagen, Denmark)\\ +Panels:&Boris Magnusson (Lund University, Sweden)\\ +Exhibition:&Elmer Sandvad (\AA rhus University, DK)\\ +Demonstrations:&Kurt N\o rdmark (\AA rhus University, DK) +\end{tabular} +% +\begin{multicols}{3}[\section*{Referees}] +V.~Andreev\\ +B\"arwolff\\ +E.~Barrelet\\ +H.P.~Beck\\ +G.~Bernardi\\ +E.~Binder\\ +P.C.~Bosetti\\ +Braunschweig\\ +F.W.~B\"usser\\ +T.~Carli\\ +A.B.~Clegg\\ +G.~Cozzika\\ +S.~Dagoret\\ +Del~Buono\\ +P.~Dingus\\ +H.~Duhm\\ +J.~Ebert\\ +S.~Eichenberger\\ +R.J.~Ellison\\ +Feltesse\\ +W.~Flauger\\ +A.~Fomenko\\ +G.~Franke\\ +J.~Garvey\\ +M.~Gennis\\ +L.~Goerlich\\ +P.~Goritchev\\ +H.~Greif\\ +E.M.~Hanlon\\ +R.~Haydar\\ +R.C.W.~Henderso\\ +P.~Hill\\ +H.~Hufnagel\\ +A.~Jacholkowska\\ +Johannsen\\ +S.~Kasarian\\ +I.R.~Kenyon\\ +C.~Kleinwort\\ +T.~K\"ohler\\ +S.D.~Kolya\\ +P.~Kostka\\ +U.~Kr\"uger\\ +J.~Kurzh\"ofer\\ +M.P.J.~Landon\\ +A.~Lebedev\\ +Ch.~Ley\\ +F.~Linsel\\ +H.~Lohmand\\ +Martin\\ +S.~Masson\\ +K.~Meier\\ +C.A.~Meyer\\ +S.~Mikocki\\ +J.V.~Morris\\ +B.~Naroska\\ +Nguyen\\ +U.~Obrock\\ +G.D.~Patel\\ +Ch.~Pichler\\ +S.~Prell\\ +F.~Raupach\\ +V.~Riech\\ +P.~Robmann\\ +N.~Sahlmann\\ +P.~Schleper\\ +Sch\"oning\\ +B.~Schwab\\ +A.~Semenov\\ +G.~Siegmon\\ +J.R.~Smith\\ +M.~Steenbock\\ +U.~Straumann\\ +C.~Thiebaux\\ +P.~Van~Esch\\ +from Yerevan Ph\\ +L.R.~West\\ +G.-G.~Winter\\ +T.P.~Yiou\\ +M.~Zimmer\end{multicols} +% +\section*{Sponsoring Institutions} +% +Bernauer-Budiman Inc., Reading, Mass.\\ +The Hofmann-International Company, San Louis Obispo, Cal.\\ +Kramer Industries, Heidelberg, Germany +% +\tableofcontents +% +\mainmatter % start of the contributions +% +\title{Hamiltonian Mechanics unter besonderer Ber\"ucksichtigung der +h\"ohreren Lehranstalten} +% +\titlerunning{Hamiltonian Mechanics} % abbreviated title (for running head) +% also used for the TOC unless +% \toctitle is used +% +\author{Ivar Ekeland\inst{1}\orcidID{0000-1111-2222-3333} \and +Roger~Temam\inst{2}\orcidID{1111-2222-3333-4444} \and +Jeffrey~Dean\orcidID{2222-3333-4444-5555} \and +David~Grove\orcidID{3333-4444-5555-6666} \and +Craig~Chambers\orcidID{4444-5555-6666-7777} \and +Kim~B.~Bruce\orcidID{5555-6666-7777-8888} \and +Elsa~Bertino\orcidID{6666-7777-8888-9999}} +% +\authorrunning{Ivar Ekeland et al.} % abbreviated author list (for running head) +% +%%%% list of authors for the TOC (use if author list has to be modified) +\tocauthor{Ivar Ekeland, Roger Temam, Jeffrey Dean, David Grove, +Craig Chambers, Kim B. Bruce, and Elisa Bertino} +% +\institute{Princeton University, Princeton NJ 08544, USA,\\ +\email{I.Ekeland@princeton.edu},\\ WWW home page: +\texttt{http://users/\homedir iekeland/web/welcome.html} +\and +Universit\'{e} de Paris-Sud, +Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\ +F-91405 Orsay Cedex, France} + +\maketitle % typeset the title of the contribution + +\begin{abstract} +The abstract should summarize the contents of the paper +using at least 70 and at most 150 words. It will be set in 9-point +font size and be inset 1.0 cm from the right and left margins. +There will be two blank lines before and after the Abstract. \dots +\keywords{computational geometry, graph theory, Hamilton cycles} +\end{abstract} +% +\section{Fixed-Period Problems: The Sublinear Case} +% +With this chapter, the preliminaries are over, and we begin the search +for periodic solutions to Hamiltonian systems. All this will be done in +the convex case; that is, we shall study the boundary-value problem +\begin{eqnarray*} + \dot{x}&=&JH' (t,x)\\ + x(0) &=& x(T) +\end{eqnarray*} +with $H(t,\cdot)$ a convex function of $x$, going to $+\infty$ when +$\left\|x\right\| \to \infty$. + +% +\subsection{Autonomous Systems} +% +In this section, we will consider the case when the Hamiltonian $H(x)$ +is autonomous. For the sake of simplicity, we shall also assume that it +is $C^{1}$. + +We shall first consider the question of nontriviality, within the +general framework of +$\left(A_{\infty},B_{\infty}\right)$-subquadratic Hamiltonians. In +the second subsection, we shall look into the special case when $H$ is +$\left(0,b_{\infty}\right)$-subquadratic, +and we shall try to derive additional information. +% +\subsubsection{The General Case: Nontriviality.} +% +We assume that $H$ is +$\left(A_{\infty},B_{\infty}\right)$-sub\-qua\-dra\-tic at infinity, +for some constant symmetric matrices $A_{\infty}$ and $B_{\infty}$, +with $B_{\infty}-A_{\infty}$ positive definite. Set: +\begin{eqnarray} +\gamma :&=&{\rm smallest\ eigenvalue\ of}\ \ B_{\infty} - A_{\infty} \\ + \lambda : &=& {\rm largest\ negative\ eigenvalue\ of}\ \ + J \frac{d}{dt} +A_{\infty}\ . +\end{eqnarray} + +Theorem~\ref{ghou:pre} tells us that if $\lambda +\gamma < 0$, the +boundary-value problem: +\begin{equation} +\begin{array}{rcl} + \dot{x}&=&JH' (x)\\ + x(0)&=&x (T) +\end{array} +\end{equation} +has at least one solution +$\overline{x}$, which is found by minimizing the dual +action functional: +\begin{equation} + \psi (u) = \int_{o}^{T} \left[\frac{1}{2} + \left(\Lambda_{o}^{-1} u,u\right) + N^{\ast} (-u)\right] dt +\end{equation} +on the range of $\Lambda$, which is a subspace $R (\Lambda)_{L}^{2}$ +with finite codimension. Here +\begin{equation} + N(x) := H(x) - \frac{1}{2} \left(A_{\infty} x,x\right) +\end{equation} +is a convex function, and +\begin{equation} + N(x) \le \frac{1}{2} + \left(\left(B_{\infty} - A_{\infty}\right) x,x\right) + + c\ \ \ \forall x\ . +\end{equation} + +% +\begin{proposition} +Assume $H'(0)=0$ and $ H(0)=0$. Set: +\begin{equation} + \delta := \liminf_{x\to 0} 2 N (x) \left\|x\right\|^{-2}\ . + \label{eq:one} +\end{equation} + +If $\gamma < - \lambda < \delta$, +the solution $\overline{u}$ is non-zero: +\begin{equation} + \overline{x} (t) \ne 0\ \ \ \forall t\ . +\end{equation} +\end{proposition} +% +\begin{proof} +Condition (\ref{eq:one}) means that, for every +$\delta ' > \delta$, there is some $\varepsilon > 0$ such that +\begin{equation} + \left\|x\right\| \le \varepsilon \Rightarrow N (x) \le + \frac{\delta '}{2} \left\|x\right\|^{2}\ . +\end{equation} + +It is an exercise in convex analysis, into which we shall not go, to +show that this implies that there is an $\eta > 0$ such that +\begin{equation} + f\left\|x\right\| \le \eta + \Rightarrow N^{\ast} (y) \le \frac{1}{2\delta '} + \left\|y\right\|^{2}\ . + \label{eq:two} +\end{equation} + +\begin{figure} +\vspace{2.5cm} +\caption{This is the caption of the figure displaying a white eagle and +a white horse on a snow field} +\end{figure} + +Since $u_{1}$ is a smooth function, we will have +$\left\|hu_{1}\right\|_\infty \le \eta$ +for $h$ small enough, and inequality (\ref{eq:two}) will hold, +yielding thereby: +\begin{equation} + \psi (hu_{1}) \le \frac{h^{2}}{2} + \frac{1}{\lambda} \left\|u_{1} \right\|_{2}^{2} + \frac{h^{2}}{2} + \frac{1}{\delta '} \left\|u_{1}\right\|^{2}\ . +\end{equation} + +If we choose $\delta '$ close enough to $\delta$, the quantity +$\left(\frac{1}{\lambda} + \frac{1}{\delta '}\right)$ +will be negative, and we end up with +\begin{equation} + \psi (hu_{1}) < 0\ \ \ \ \ {\rm for}\ \ h\ne 0\ \ {\rm small}\ . +\end{equation} + +On the other hand, we check directly that $\psi (0) = 0$. This shows +that 0 cannot be a minimizer of $\psi$, not even a local one. +So $\overline{u} \ne 0$ and +$\overline{u} \ne \Lambda_{o}^{-1} (0) = 0$. \qed +\end{proof} +% +\begin{corollary} +Assume $H$ is $C^{2}$ and +$\left(a_{\infty},b_{\infty}\right)$-subquadratic at infinity. Let +$\xi_{1},\allowbreak\dots,\allowbreak\xi_{N}$ be the +equilibria, that is, the solutions of $H' (\xi ) = 0$. +Denote by $\omega_{k}$ +the smallest eigenvalue of $H'' \left(\xi_{k}\right)$, and set: +\begin{equation} + \omega : = {\rm Min\,} \left\{\omega_{1},\dots,\omega_{k}\right\}\ . +\end{equation} +If: +\begin{equation} + \frac{T}{2\pi} b_{\infty} < + - E \left[- \frac{T}{2\pi}a_{\infty}\right] < + \frac{T}{2\pi}\omega + \label{eq:three} +\end{equation} +then minimization of $\psi$ yields a non-constant $T$-periodic solution +$\overline{x}$. +\end{corollary} +% + +We recall once more that by the integer part $E [\alpha ]$ of +$\alpha \in \bbbr$, we mean the $a\in \bbbz$ +such that $a< \alpha \le a+1$. For instance, +if we take $a_{\infty} = 0$, Corollary 2 tells +us that $\overline{x}$ exists and is +non-constant provided that: + +\begin{equation} + \frac{T}{2\pi} b_{\infty} < 1 < \frac{T}{2\pi} +\end{equation} +or +\begin{equation} + T\in \left(\frac{2\pi}{\omega},\frac{2\pi}{b_{\infty}}\right)\ . + \label{eq:four} +\end{equation} + +% +\begin{proof} +The spectrum of $\Lambda$ is $\frac{2\pi}{T} \bbbz +a_{\infty}$. The +largest negative eigenvalue $\lambda$ is given by +$\frac{2\pi}{T}k_{o} +a_{\infty}$, +where +\begin{equation} + \frac{2\pi}{T}k_{o} + a_{\infty} < 0 + \le \frac{2\pi}{T} (k_{o} +1) + a_{\infty}\ . +\end{equation} +Hence: +\begin{equation} + k_{o} = E \left[- \frac{T}{2\pi} a_{\infty}\right] \ . +\end{equation} + +The condition $\gamma < -\lambda < \delta$ now becomes: +\begin{equation} + b_{\infty} - a_{\infty} < + - \frac{2\pi}{T} k_{o} -a_{\infty} < \omega -a_{\infty} +\end{equation} +which is precisely condition (\ref{eq:three}).\qed +\end{proof} +% + +\begin{lemma} +Assume that $H$ is $C^{2}$ on $\bbbr^{2n} \setminus \{ 0\}$ and +that $H'' (x)$ is non-de\-gen\-er\-ate for any $x\ne 0$. Then any local +minimizer $\widetilde{x}$ of $\psi$ has minimal period $T$. +\end{lemma} +% +\begin{proof} +We know that $\widetilde{x}$, or +$\widetilde{x} + \xi$ for some constant $\xi +\in \bbbr^{2n}$, is a $T$-periodic solution of the Hamiltonian system: +\begin{equation} + \dot{x} = JH' (x)\ . +\end{equation} + +There is no loss of generality in taking $\xi = 0$. So +$\psi (x) \ge \psi (\widetilde{x} )$ +for all $\widetilde{x}$ in some neighbourhood of $x$ in +$W^{1,2} \left(\bbbr / T\bbbz ; \bbbr^{2n}\right)$. + +But this index is precisely the index +$i_{T} (\widetilde{x} )$ of the $T$-periodic +solution $\widetilde{x}$ over the interval +$(0,T)$, as defined in Sect.~2.6. So +\begin{equation} + i_{T} (\widetilde{x} ) = 0\ . + \label{eq:five} +\end{equation} + +Now if $\widetilde{x}$ has a lower period, $T/k$ say, +we would have, by Corollary 31: +\begin{equation} + i_{T} (\widetilde{x} ) = + i_{kT/k}(\widetilde{x} ) \ge + ki_{T/k} (\widetilde{x} ) + k-1 \ge k-1 \ge 1\ . +\end{equation} + +This would contradict (\ref{eq:five}), and thus cannot happen.\qed +\end{proof} +% +\paragraph{Notes and Comments.} +The results in this section are a +refined version of \cite{clar:eke}; +the minimality result of Proposition +14 was the first of its kind. + +To understand the nontriviality conditions, such as the one in formula +(\ref{eq:four}), one may think of a one-parameter family +$x_{T}$, $T\in \left(2\pi\omega^{-1}, 2\pi b_{\infty}^{-1}\right)$ +of periodic solutions, $x_{T} (0) = x_{T} (T)$, +with $x_{T}$ going away to infinity when $T\to 2\pi \omega^{-1}$, +which is the period of the linearized system at 0. + +\begin{table} +\caption{This is the example table taken out of {\it The +\TeX{}book,} p.\,246} +\begin{center} +\begin{tabular}{r@{\quad}rl} +\hline +\multicolumn{1}{l}{\rule{0pt}{12pt} + Year}&\multicolumn{2}{l}{World population}\\[2pt] +\hline\rule{0pt}{12pt} +8000 B.C. & 5,000,000& \\ + 50 A.D. & 200,000,000& \\ +1650 A.D. & 500,000,000& \\ +1945 A.D. & 2,300,000,000& \\ +1980 A.D. & 4,400,000,000& \\[2pt] +\hline +\end{tabular} +\end{center} +\end{table} +% +\begin{theorem} [Ghoussoub-Preiss]\label{ghou:pre} +Assume $H(t,x)$ is +$(0,\varepsilon )$-subquadratic at +infinity for all $\varepsilon > 0$, and $T$-periodic in $t$ +\begin{equation} + H (t,\cdot )\ \ \ \ \ {\rm is\ convex}\ \ \forall t +\end{equation} +\begin{equation} + H (\cdot ,x)\ \ \ \ \ {\rm is}\ \ T{\rm -periodic}\ \ \forall x +\end{equation} +\begin{equation} + H (t,x)\ge n\left(\left\|x\right\|\right)\ \ \ \ \ + {\rm with}\ \ n (s)s^{-1}\to \infty\ \ {\rm as}\ \ s\to \infty +\end{equation} +\begin{equation} + \forall \varepsilon > 0\ ,\ \ \ \exists c\ :\ + H(t,x) \le \frac{\varepsilon}{2}\left\|x\right\|^{2} + c\ . +\end{equation} + +Assume also that $H$ is $C^{2}$, and $H'' (t,x)$ is positive definite +everywhere. Then there is a sequence $x_{k}$, $k\in \bbbn$, of +$kT$-periodic solutions of the system +\begin{equation} + \dot{x} = JH' (t,x) +\end{equation} +such that, for every $k\in \bbbn$, there is some $p_{o}\in\bbbn$ with: +\begin{equation} + p\ge p_{o}\Rightarrow x_{pk} \ne x_{k}\ . +\end{equation} +\qed +\end{theorem} +% +\begin{example} [{{\rm External forcing}}] +Consider the system: +\begin{equation} + \dot{x} = JH' (x) + f(t) +\end{equation} +where the Hamiltonian $H$ is +$\left(0,b_{\infty}\right)$-subquadratic, and the +forcing term is a distribution on the circle: +\begin{equation} + f = \frac{d}{dt} F + f_{o}\ \ \ \ \ + {\rm with}\ \ F\in L^{2} \left(\bbbr / T\bbbz; \bbbr^{2n}\right)\ , +\end{equation} +where $f_{o} : = T^{-1}\int_{o}^{T} f (t) dt$. For instance, +\begin{equation} + f (t) = \sum_{k\in \bbbn} \delta_{k} \xi\ , +\end{equation} +where $\delta_{k}$ is the Dirac mass at $t= k$ and +$\xi \in \bbbr^{2n}$ is a +constant, fits the prescription. This means that the system +$\dot{x} = JH' (x)$ is being excited by a +series of identical shocks at interval $T$. +\end{example} +% +\begin{definition} +Let $A_{\infty} (t)$ and $B_{\infty} (t)$ be symmetric +operators in $\bbbr^{2n}$, depending continuously on +$t\in [0,T]$, such that +$A_{\infty} (t) \le B_{\infty} (t)$ for all $t$. + +A Borelian function +$H: [0,T]\times \bbbr^{2n} \to \bbbr$ +is called +$\left(A_{\infty} ,B_{\infty}\right)$-{\it subquadratic at infinity} +if there exists a function $N(t,x)$ such that: +\begin{equation} + H (t,x) = \frac{1}{2} \left(A_{\infty} (t) x,x\right) + N(t,x) +\end{equation} +\begin{equation} + \forall t\ ,\ \ \ N(t,x)\ \ \ \ \ + {\rm is\ convex\ with\ respect\ to}\ \ x +\end{equation} +\begin{equation} + N(t,x) \ge n\left(\left\|x\right\|\right)\ \ \ \ \ + {\rm with}\ \ n(s)s^{-1}\to +\infty\ \ {\rm as}\ \ s\to +\infty +\end{equation} +\begin{equation} + \exists c\in \bbbr\ :\ \ \ H (t,x) \le + \frac{1}{2} \left(B_{\infty} (t) x,x\right) + c\ \ \ \forall x\ . +\end{equation} + +If $A_{\infty} (t) = a_{\infty} I$ and +$B_{\infty} (t) = b_{\infty} I$, with +$a_{\infty} \le b_{\infty} \in \bbbr$, +we shall say that $H$ is +$\left(a_{\infty},b_{\infty}\right)$-subquadratic +at infinity. As an example, the function +$\left\|x\right\|^{\alpha}$, with +$1\le \alpha < 2$, is $(0,\varepsilon )$-subquadratic at infinity +for every $\varepsilon > 0$. Similarly, the Hamiltonian +\begin{equation} +H (t,x) = \frac{1}{2} k \left\|k\right\|^{2} +\left\|x\right\|^{\alpha} +\end{equation} +is $(k,k+\varepsilon )$-subquadratic for every $\varepsilon > 0$. +Note that, if $k<0$, it is not convex. +\end{definition} +% + +\paragraph{Notes and Comments.} +The first results on subharmonics were +obtained by Rabinowitz in \cite{rab}, who showed the existence of +infinitely many subharmonics both in the subquadratic and superquadratic +case, with suitable growth conditions on $H'$. Again the duality +approach enabled Clarke and Ekeland in \cite{clar:eke:2} to treat the +same problem in the convex-subquadratic case, with growth conditions on +$H$ only. + +Recently, Michalek and Tarantello (see \cite{mich:tar} and \cite{tar}) +have obtained lower bound on the number of subharmonics of period $kT$, +based on symmetry considerations and on pinching estimates, as in +Sect.~5.2 of this article. + +% +% ---- Bibliography ---- +% +\begin{thebibliography}{5} +% +\bibitem {clar:eke} +Clarke, F., Ekeland, I.: +Nonlinear oscillations and +boundary-value problems for Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) + +\bibitem {clar:eke:2} +Clarke, F., Ekeland, I.: +Solutions p\'{e}riodiques, du +p\'{e}riode donn\'{e}e, des \'{e}quations hamiltoniennes. +Note CRAS Paris 287, 1013--1015 (1978) + +\bibitem {mich:tar} +Michalek, R., Tarantello, G.: +Subharmonic solutions with prescribed minimal +period for nonautonomous Hamiltonian systems. +J. Diff. Eq. 72, 28--55 (1988) + +\bibitem {tar} +Tarantello, G.: +Subharmonic solutions for Hamiltonian +systems via a $\bbbz_{p}$ pseudoindex theory. +Annali di Matematica Pura (to appear) + +\bibitem {rab} +Rabinowitz, P.: +On subharmonic solutions of a Hamiltonian system. +Comm. Pure Appl. Math. 33, 609--633 (1980) + +\end{thebibliography} + +% +% second contribution with nearly identical text, +% slightly changed contribution head (all entries +% appear as defaults), and modified bibliography +% +\title{Hamiltonian Mechanics Two} + +\author{Ivar Ekeland\inst{1}\orcidID{0000-1111-2222-3333} \and +Roger Temam\inst{2}\orcidID{1111-2222-3333-4444}} + +\institute{Princeton University, Princeton NJ 08544, USA +\and +Universit\'{e} de Paris-Sud, +Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\ +F-91405 Orsay Cedex, France} + +\maketitle +% +% Modify the bibliography environment to call for the author-year +% system. This is done normally with the citeauthoryear option +% for a particular contribution. +\makeatletter +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def\@cite#1{#1}% + \def\@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\makeatother +% +\begin{abstract} +The abstract should summarize the contents of the paper +using at least 70 and at most 150 words. It will be set in 9-point +font size and be inset 1.0 cm from the right and left margins. +There will be two blank lines before and after the Abstract. \dots +\keywords{graph transformations, convex geometry, lattice computations, +convex polygons, triangulations, discrete geometry} +\end{abstract} +% +\section{Fixed-Period Problems: The Sublinear Case} +% +With this chapter, the preliminaries are over, and we begin the search +for periodic solutions to Hamiltonian systems. All this will be done in +the convex case; that is, we shall study the boundary-value problem +\begin{eqnarray*} + \dot{x}&=&JH' (t,x)\\ + x(0) &=& x(T) +\end{eqnarray*} +with $H(t,\cdot)$ a convex function of $x$, going to $+\infty$ when +$\left\|x\right\| \to \infty$. + +% +\subsection{Autonomous Systems} +% +In this section, we will consider the case when the Hamiltonian $H(x)$ +is autonomous. For the sake of simplicity, we shall also assume that it +is $C^{1}$. + +We shall first consider the question of nontriviality, within the +general framework of +$\left(A_{\infty},B_{\infty}\right)$-subquadratic Hamiltonians. In +the second subsection, we shall look into the special case when $H$ is +$\left(0,b_{\infty}\right)$-subquadratic, +and we shall try to derive additional information. +% +\subsubsection{The General Case: Nontriviality.} +% +We assume that $H$ is +$\left(A_{\infty},B_{\infty}\right)$-sub\-qua\-dra\-tic at infinity, +for some constant symmetric matrices $A_{\infty}$ and $B_{\infty}$, +with $B_{\infty}-A_{\infty}$ positive definite. Set: +\begin{eqnarray} +\gamma :&=&{\rm smallest\ eigenvalue\ of}\ \ B_{\infty} - A_{\infty} \\ + \lambda : &=& {\rm largest\ negative\ eigenvalue\ of}\ \ + J \frac{d}{dt} +A_{\infty}\ . +\end{eqnarray} + +Theorem 21 tells us that if $\lambda +\gamma < 0$, the boundary-value +problem: +\begin{equation} +\begin{array}{rcl} + \dot{x}&=&JH' (x)\\ + x(0)&=&x (T) +\end{array} +\end{equation} +has at least one solution +$\overline{x}$, which is found by minimizing the dual +action functional: +\begin{equation} + \psi (u) = \int_{o}^{T} \left[\frac{1}{2} + \left(\Lambda_{o}^{-1} u,u\right) + N^{\ast} (-u)\right] dt +\end{equation} +on the range of $\Lambda$, which is a subspace $R (\Lambda)_{L}^{2}$ +with finite codimension. Here +\begin{equation} + N(x) := H(x) - \frac{1}{2} \left(A_{\infty} x,x\right) +\end{equation} +is a convex function, and +\begin{equation} + N(x) \le \frac{1}{2} + \left(\left(B_{\infty} - A_{\infty}\right) x,x\right) + + c\ \ \ \forall x\ . +\end{equation} + +% +\begin{proposition} +Assume $H'(0)=0$ and $ H(0)=0$. Set: +\begin{equation} + \delta := \liminf_{x\to 0} 2 N (x) \left\|x\right\|^{-2}\ . + \label{2eq:one} +\end{equation} + +If $\gamma < - \lambda < \delta$, +the solution $\overline{u}$ is non-zero: +\begin{equation} + \overline{x} (t) \ne 0\ \ \ \forall t\ . +\end{equation} +\end{proposition} +% +\begin{proof} +Condition (\ref{2eq:one}) means that, for every +$\delta ' > \delta$, there is some $\varepsilon > 0$ such that +\begin{equation} + \left\|x\right\| \le \varepsilon \Rightarrow N (x) \le + \frac{\delta '}{2} \left\|x\right\|^{2}\ . +\end{equation} + +It is an exercise in convex analysis, into which we shall not go, to +show that this implies that there is an $\eta > 0$ such that +\begin{equation} + f\left\|x\right\| \le \eta + \Rightarrow N^{\ast} (y) \le \frac{1}{2\delta '} + \left\|y\right\|^{2}\ . + \label{2eq:two} +\end{equation} + +\begin{figure} +\vspace{2.5cm} +\caption{This is the caption of the figure displaying a white eagle and +a white horse on a snow field} +\end{figure} + +Since $u_{1}$ is a smooth function, we will have +$\left\|hu_{1}\right\|_\infty \le \eta$ +for $h$ small enough, and inequality (\ref{2eq:two}) will hold, +yielding thereby: +\begin{equation} + \psi (hu_{1}) \le \frac{h^{2}}{2} + \frac{1}{\lambda} \left\|u_{1} \right\|_{2}^{2} + \frac{h^{2}}{2} + \frac{1}{\delta '} \left\|u_{1}\right\|^{2}\ . +\end{equation} + +If we choose $\delta '$ close enough to $\delta$, the quantity +$\left(\frac{1}{\lambda} + \frac{1}{\delta '}\right)$ +will be negative, and we end up with +\begin{equation} + \psi (hu_{1}) < 0\ \ \ \ \ {\rm for}\ \ h\ne 0\ \ {\rm small}\ . +\end{equation} + +On the other hand, we check directly that $\psi (0) = 0$. This shows +that 0 cannot be a minimizer of $\psi$, not even a local one. +So $\overline{u} \ne 0$ and +$\overline{u} \ne \Lambda_{o}^{-1} (0) = 0$. \qed +\end{proof} +% +\begin{corollary} +Assume $H$ is $C^{2}$ and +$\left(a_{\infty},b_{\infty}\right)$-subquadratic at infinity. Let +$\xi_{1},\allowbreak\dots,\allowbreak\xi_{N}$ be the +equilibria, that is, the solutions of $H' (\xi ) = 0$. +Denote by $\omega_{k}$ +the smallest eigenvalue of $H'' \left(\xi_{k}\right)$, and set: +\begin{equation} + \omega : = {\rm Min\,} \left\{\omega_{1},\dots,\omega_{k}\right\}\ . +\end{equation} +If: +\begin{equation} + \frac{T}{2\pi} b_{\infty} < + - E \left[- \frac{T}{2\pi}a_{\infty}\right] < + \frac{T}{2\pi}\omega + \label{2eq:three} +\end{equation} +then minimization of $\psi$ yields a non-constant $T$-periodic solution +$\overline{x}$. +\end{corollary} +% + +We recall once more that by the integer part $E [\alpha ]$ of +$\alpha \in \bbbr$, we mean the $a\in \bbbz$ +such that $a< \alpha \le a+1$. For instance, +if we take $a_{\infty} = 0$, Corollary 2 tells +us that $\overline{x}$ exists and is +non-constant provided that: + +\begin{equation} + \frac{T}{2\pi} b_{\infty} < 1 < \frac{T}{2\pi} +\end{equation} +or +\begin{equation} + T\in \left(\frac{2\pi}{\omega},\frac{2\pi}{b_{\infty}}\right)\ . + \label{2eq:four} +\end{equation} + +% +\begin{proof} +The spectrum of $\Lambda$ is $\frac{2\pi}{T} \bbbz +a_{\infty}$. The +largest negative eigenvalue $\lambda$ is given by +$\frac{2\pi}{T}k_{o} +a_{\infty}$, +where +\begin{equation} + \frac{2\pi}{T}k_{o} + a_{\infty} < 0 + \le \frac{2\pi}{T} (k_{o} +1) + a_{\infty}\ . +\end{equation} +Hence: +\begin{equation} + k_{o} = E \left[- \frac{T}{2\pi} a_{\infty}\right] \ . +\end{equation} + +The condition $\gamma < -\lambda < \delta$ now becomes: +\begin{equation} + b_{\infty} - a_{\infty} < + - \frac{2\pi}{T} k_{o} -a_{\infty} < \omega -a_{\infty} +\end{equation} +which is precisely condition (\ref{2eq:three}).\qed +\end{proof} +% + +\begin{lemma} +Assume that $H$ is $C^{2}$ on $\bbbr^{2n} \setminus \{ 0\}$ and +that $H'' (x)$ is non-de\-gen\-er\-ate for any $x\ne 0$. Then any local +minimizer $\widetilde{x}$ of $\psi$ has minimal period $T$. +\end{lemma} +% +\begin{proof} +We know that $\widetilde{x}$, or +$\widetilde{x} + \xi$ for some constant $\xi +\in \bbbr^{2n}$, is a $T$-periodic solution of the Hamiltonian system: +\begin{equation} + \dot{x} = JH' (x)\ . +\end{equation} + +There is no loss of generality in taking $\xi = 0$. So +$\psi (x) \ge \psi (\widetilde{x} )$ +for all $\widetilde{x}$ in some neighbourhood of $x$ in +$W^{1,2} \left(\bbbr / T\bbbz ; \bbbr^{2n}\right)$. + +But this index is precisely the index +$i_{T} (\widetilde{x} )$ of the $T$-periodic +solution $\widetilde{x}$ over the interval +$(0,T)$, as defined in Sect.~2.6. So +\begin{equation} + i_{T} (\widetilde{x} ) = 0\ . + \label{2eq:five} +\end{equation} + +Now if $\widetilde{x}$ has a lower period, $T/k$ say, +we would have, by Corollary 31: +\begin{equation} + i_{T} (\widetilde{x} ) = + i_{kT/k}(\widetilde{x} ) \ge + ki_{T/k} (\widetilde{x} ) + k-1 \ge k-1 \ge 1\ . +\end{equation} + +This would contradict (\ref{2eq:five}), and thus cannot happen.\qed +\end{proof} +% +\paragraph{Notes and Comments.} +The results in this section are a +refined version of \cite{2clar:eke}; +the minimality result of Proposition +14 was the first of its kind. + +To understand the nontriviality conditions, such as the one in formula +(\ref{2eq:four}), one may think of a one-parameter family +$x_{T}$, $T\in \left(2\pi\omega^{-1}, 2\pi b_{\infty}^{-1}\right)$ +of periodic solutions, $x_{T} (0) = x_{T} (T)$, +with $x_{T}$ going away to infinity when $T\to 2\pi \omega^{-1}$, +which is the period of the linearized system at 0. + +\begin{table} +\caption{This is the example table taken out of {\it The +\TeX{}book,} p.\,246} +\begin{center} +\begin{tabular}{r@{\quad}rl} +\hline +\multicolumn{1}{l}{\rule{0pt}{12pt} + Year}&\multicolumn{2}{l}{World population}\\[2pt] +\hline\rule{0pt}{12pt} +8000 B.C. & 5,000,000& \\ + 50 A.D. & 200,000,000& \\ +1650 A.D. & 500,000,000& \\ +1945 A.D. & 2,300,000,000& \\ +1980 A.D. & 4,400,000,000& \\[2pt] +\hline +\end{tabular} +\end{center} +\end{table} +% +\begin{theorem} [Ghoussoub-Preiss] +Assume $H(t,x)$ is +$(0,\varepsilon )$-subquadratic at +infinity for all $\varepsilon > 0$, and $T$-periodic in $t$ +\begin{equation} + H (t,\cdot )\ \ \ \ \ {\rm is\ convex}\ \ \forall t +\end{equation} +\begin{equation} + H (\cdot ,x)\ \ \ \ \ {\rm is}\ \ T{\rm -periodic}\ \ \forall x +\end{equation} +\begin{equation} + H (t,x)\ge n\left(\left\|x\right\|\right)\ \ \ \ \ + {\rm with}\ \ n (s)s^{-1}\to \infty\ \ {\rm as}\ \ s\to \infty +\end{equation} +\begin{equation} + \forall \varepsilon > 0\ ,\ \ \ \exists c\ :\ + H(t,x) \le \frac{\varepsilon}{2}\left\|x\right\|^{2} + c\ . +\end{equation} + +Assume also that $H$ is $C^{2}$, and $H'' (t,x)$ is positive definite +everywhere. Then there is a sequence $x_{k}$, $k\in \bbbn$, of +$kT$-periodic solutions of the system +\begin{equation} + \dot{x} = JH' (t,x) +\end{equation} +such that, for every $k\in \bbbn$, there is some $p_{o}\in\bbbn$ with: +\begin{equation} + p\ge p_{o}\Rightarrow x_{pk} \ne x_{k}\ . +\end{equation} +\qed +\end{theorem} +% +\begin{example} [{{\rm External forcing}}] +Consider the system: +\begin{equation} + \dot{x} = JH' (x) + f(t) +\end{equation} +where the Hamiltonian $H$ is +$\left(0,b_{\infty}\right)$-subquadratic, and the +forcing term is a distribution on the circle: +\begin{equation} + f = \frac{d}{dt} F + f_{o}\ \ \ \ \ + {\rm with}\ \ F\in L^{2} \left(\bbbr / T\bbbz; \bbbr^{2n}\right)\ , +\end{equation} +where $f_{o} : = T^{-1}\int_{o}^{T} f (t) dt$. For instance, +\begin{equation} + f (t) = \sum_{k\in \bbbn} \delta_{k} \xi\ , +\end{equation} +where $\delta_{k}$ is the Dirac mass at $t= k$ and +$\xi \in \bbbr^{2n}$ is a +constant, fits the prescription. This means that the system +$\dot{x} = JH' (x)$ is being excited by a +series of identical shocks at interval $T$. +\end{example} +% +\begin{definition} +Let $A_{\infty} (t)$ and $B_{\infty} (t)$ be symmetric +operators in $\bbbr^{2n}$, depending continuously on +$t\in [0,T]$, such that +$A_{\infty} (t) \le B_{\infty} (t)$ for all $t$. + +A Borelian function +$H: [0,T]\times \bbbr^{2n} \to \bbbr$ +is called +$\left(A_{\infty} ,B_{\infty}\right)$-{\it subquadratic at infinity} +if there exists a function $N(t,x)$ such that: +\begin{equation} + H (t,x) = \frac{1}{2} \left(A_{\infty} (t) x,x\right) + N(t,x) +\end{equation} +\begin{equation} + \forall t\ ,\ \ \ N(t,x)\ \ \ \ \ + {\rm is\ convex\ with\ respect\ to}\ \ x +\end{equation} +\begin{equation} + N(t,x) \ge n\left(\left\|x\right\|\right)\ \ \ \ \ + {\rm with}\ \ n(s)s^{-1}\to +\infty\ \ {\rm as}\ \ s\to +\infty +\end{equation} +\begin{equation} + \exists c\in \bbbr\ :\ \ \ H (t,x) \le + \frac{1}{2} \left(B_{\infty} (t) x,x\right) + c\ \ \ \forall x\ . +\end{equation} + +If $A_{\infty} (t) = a_{\infty} I$ and +$B_{\infty} (t) = b_{\infty} I$, with +$a_{\infty} \le b_{\infty} \in \bbbr$, +we shall say that $H$ is +$\left(a_{\infty},b_{\infty}\right)$-subquadratic +at infinity. As an example, the function +$\left\|x\right\|^{\alpha}$, with +$1\le \alpha < 2$, is $(0,\varepsilon )$-subquadratic at infinity +for every $\varepsilon > 0$. Similarly, the Hamiltonian +\begin{equation} +H (t,x) = \frac{1}{2} k \left\|k\right\|^{2} +\left\|x\right\|^{\alpha} +\end{equation} +is $(k,k+\varepsilon )$-subquadratic for every $\varepsilon > 0$. +Note that, if $k<0$, it is not convex. +\end{definition} +% + +\paragraph{Notes and Comments.} +The first results on subharmonics were +obtained by Rabinowitz in \cite{2rab}, who showed the existence of +infinitely many subharmonics both in the subquadratic and superquadratic +case, with suitable growth conditions on $H'$. Again the duality +approach enabled Clarke and Ekeland in \cite{2clar:eke:2} to treat the +same problem in the convex-subquadratic case, with growth conditions on +$H$ only. + +Recently, Michalek and Tarantello (see Michalek, R., Tarantello, G. +\cite{2mich:tar} and Tarantello, G. \cite{2tar}) have obtained lower +bound on the number of subharmonics of period $kT$, based on symmetry +considerations and on pinching estimates, as in Sect.~5.2 of this +article. + +% +% ---- Bibliography ---- +% +\begin{thebibliography}{} +% +\bibitem[1980]{2clar:eke} +Clarke, F., Ekeland, I.: +Nonlinear oscillations and +boundary-value problems for Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) + +\bibitem[1981]{2clar:eke:2} +Clarke, F., Ekeland, I.: +Solutions p\'{e}riodiques, du +p\'{e}riode donn\'{e}e, des \'{e}quations hamiltoniennes. +Note CRAS Paris 287, 1013--1015 (1978) + +\bibitem[1982]{2mich:tar} +Michalek, R., Tarantello, G.: +Subharmonic solutions with prescribed minimal +period for nonautonomous Hamiltonian systems. +J. Diff. Eq. 72, 28--55 (1988) + +\bibitem[1983]{2tar} +Tarantello, G.: +Subharmonic solutions for Hamiltonian +systems via a $\bbbz_{p}$ pseudoindex theory. +Annali di Matematica Pura (to appear) + +\bibitem[1985]{2rab} +Rabinowitz, P.: +On subharmonic solutions of a Hamiltonian system. +Comm. Pure Appl. Math. 33, 609--633 (1980) + +\end{thebibliography} +\clearpage +\addtocmark[2]{Author Index} % additional numbered TOC entry +\renewcommand{\indexname}{Author Index} +\printindex +\clearpage +\addtocmark[2]{Subject Index} % additional numbered TOC entry +\markboth{Subject Index}{Subject Index} +\renewcommand{\indexname}{Subject Index} +\input{subjidx.ind} +\end{document} diff --git a/paper/llncs2e/llncs.doc b/paper/llncs2e/llncs.doc new file mode 100644 index 000000000..eb665a6ce --- /dev/null +++ b/paper/llncs2e/llncs.doc @@ -0,0 +1,1256 @@ +% This is LLNCS.DOC the documentation file of +% the LaTeX2e class from Springer-Verlag +% for Lecture Notes in Computer Science, version 2.4 +\documentclass{llncs} +\usepackage{llncsdoc} +% +\begin{document} +\markboth{\LaTeXe{} Class for Lecture Notes in Computer +Science}{\LaTeXe{} Class for Lecture Notes in Computer Science} +\thispagestyle{empty} +\begin{flushleft} +\LARGE\bfseries Instructions for Authors\\ +Coding with \LaTeX\\[2cm] +\end{flushleft} +\rule{\textwidth}{1pt} +\vspace{2pt} +\begin{flushright} +\Huge +\begin{tabular}{@{}l} +\LaTeXe{} Class\\ +for Lecture Notes\\ +in Computer Science\\[6pt] +{\Large Version 2.4} +\end{tabular} +\end{flushright} +\rule{\textwidth}{1pt} +\vfill +%\begin{flushleft} +%\large\itshape +%\begin{tabular}{@{}l} +%{\Large\upshape\bfseries Springer}\\[8pt] +%Berlin\enspace Heidelberg\enspace New\kern0.1em York\\[5pt] +%Barcelona\enspace Budapest\enspace Hong\kern0.2em Kong\\[5pt] +%London\enspace Milan\enspace Paris\enspace\\[5pt] +%Santa\kern0.2em Clara\enspace Singapore\enspace Tokyo +%\end{tabular} +%\end{flushleft} +\newpage +% +\section*{For further information please contact us:} +% +\begin{flushleft} +\begin{tabular}{l@{\quad}l@{\hspace{3mm}}l@{\qquad}l} +$\bullet$&\multicolumn{3}{@{}l}{\bfseries LNCS Editorial Office}\\[1mm] +&\multicolumn{3}{@{}l}{Springer-Verlag}\\ +&\multicolumn{3}{@{}l}{Computer Science Editorial}\\ +&\multicolumn{3}{@{}l}{Tiergartenstrae 17}\\ +&\multicolumn{3}{@{}l}{69121 Heidelberg}\\ +&\multicolumn{3}{@{}l}{Germany}\\[0.5mm] + & Tel: & +49-6221-487-8706\\ + & Fax: & +49-6221-487-8588\\ + & e-mail: & \tt lncs@springer.com & for editorial questions\\ + & & \tt texhelp@springer.de & for \TeX{} problems\\[2mm] +\noalign{\rule{\textwidth}{1pt}} +\noalign{\vskip2mm} +% +%{\tt svserv@vax.ntp.springer.de}\hfil first try the \verb|help| +%command. +% +$\bullet$&\multicolumn{3}{@{}l}{\bfseries We are also reachable through the world wide web:}\\[1mm] + &\multicolumn{2}{@{}l}{\texttt{http://www.springer.com}}&Springer Global Website\\ + &\multicolumn{2}{@{}l}{\texttt{http://www.springer.com/lncs}}&LNCS home page\\ + &\multicolumn{2}{@{}l}{\texttt{http://www.springerlink.com}}&data repository\\ + &\multicolumn{2}{@{}l}{\texttt{ftp://ftp.springer.de}}&FTP server +\end{tabular} +\end{flushleft} + + +% +\newpage +\tableofcontents +\newpage +% +\section{Introduction} +% +Authors wishing to code their contribution +with \LaTeX{}, as well as those who have already coded with \LaTeX{}, +will be provided with a document class that will give the text the +desired layout. Authors are requested to +adhere strictly to these instructions; {\em the class +file must not be changed}. + +The text output area is automatically set within an area of +12.2\,cm horizontally and 19.3\,cm vertically. + +If you are already familiar with \LaTeX{}, then the +LLNCS class should not give you any major difficulties. +It will change the layout to the required LLNCS style +(it will for instance define the layout of \verb|\section|). +We had to invent some extra commands, +which are not provided by \LaTeX{} (e.g.\ +\verb|\institute|, see also Sect.\,\ref{contbegin}) + +For the main body of the paper (the text) you +should use the commands of the standard \LaTeX{} ``article'' class. +Even if you are familiar with those commands, we urge you to read +this entire documentation thoroughly. It contains many suggestions on +how to use our commands properly; thus your paper +will be formatted exactly to LLNCS standard. +For the input of the references at the end of your contribution, +please follow our instructions given in Sect.\,\ref{refer} References. + +The majority of these hints are not specific for LLNCS; they may improve +your use of \LaTeX{} in general. +Furthermore, the documentation provides suggestions about the proper +editing and use +of the input files (capitalization, abbreviation etc.) (see +Sect.\,\ref{refedit} How to Edit Your Input File). +% +\section{How to Proceed} +% +The package consists of the following files: +\begin{flushleft} +\begin{tabular}{@{}p{2.5cm}l} +{\tt history.txt}& the version history of the package\\[2pt] +{\tt llncs.cls} & class file for \LaTeX{}\\[2pt] +{\tt llncs.dem} & an example showing how to code the text\\[2pt] +{\tt llncs.doc} & general instructions (source of this document),\\ + & {\tt llncs.doc} means {\itshape l\/}atex {\itshape doc\/}umentation for\\ + & {\itshape L\/}ecture {\itshape N}otes in {\itshape C\/}omputer {\itshape S\/}cience\\ +{\tt llncsdoc.pdf}& the documentation of the class (PDF version),\\ +{\tt llncs.doc} & general instructions (source of this document),\\ +{\tt llncsdoc.sty} & class modifications to help for the instructions\\ +{\tt llncs.ind} & an external (faked) author index file\\ +{\tt subjidx.ind} & subject index demo from the Springer book package\\ +{\tt llncs.dvi} & the resultig DVI file (remember to use binary transfer!)\\[2pt] +{\tt sprmindx.sty} & supplementary style file for MakeIndex\\ + & (usage: {\tt makeindex -s sprmindx.sty }) +\end{tabular} +\end{flushleft} +% +\subsection{How to Invoke the LLNCS Document Class} +% +The LLNCS class is an extension of the standard \LaTeX{} ``article'' +document class. Therefore you may use all ``article'' commands for the +body of your contribution to prepare your manuscript. +LLNCS class is invoked by replacing ``article'' by ``llncs'' in the +first line of your document: +\begin{verbatim} +\documentclass{llncs} +% +\begin{document} + +\end{document} +\end{verbatim} +% +\subsection{Contributions Already Coded with \protect\LaTeX{} without +the LLNCS document class} +% +If your file is already coded with \LaTeX{} you can easily +adapt it a posteriori to the LLNCS document class. + +Please refrain from using any \LaTeX{} or \TeX{} commands +that affect the layout or formatting of your document (i.e. commands +like \verb|\textheight|, \verb|\vspace|, \verb|\headsep| etc.). +There may nevertheless be exceptional occasions on which to +use some of them. + +The LLNCS document class has been carefully designed to produce the +right layout from your \LaTeX{} input. If there is anything specific you +would like to do and for which the style file does not provide a +command, {\em please contact us}. Same holds for any error and bug you +discover (there is however no reward for this -- sorry). +% +\section{General Rules for Coding Formulas} +% +With mathematical formulas you may proceed as described +in Sect.\,3.3 of the {\em \LaTeX{} User's Guide \& Reference +Manual\/} by Leslie Lamport (2nd~ed. 1994), Addison-Wesley Publishing +Company, Inc. + +Equations are automatically numbered sequentially throughout your +contribution using arabic numerals in parentheses on the right-hand +side. + +When you are working in math mode everything is typeset in italics. +Sometimes you need to insert non-mathematical elements (e.g.\ +words or phrases). Such insertions should be coded in roman +(with \verb|\mbox|) as illustrated in the following example: +\begin{flushleft} +{\itshape Sample Input} +\end{flushleft} +\begin{verbatim} +\begin{equation} + \left(\frac{a^{2} + b^{2}}{c^{3}} \right) = 1 \quad + \mbox{ if } c\neq 0 \mbox{ and if } a,b,c\in \bbbr \enspace . +\end{equation} +\end{verbatim} +{\itshape Sample Output} +\begin{equation} + \left(\frac{a^{2} + b^{2}}{c^{3}} \right) = 1 \quad + \mbox{ if } c\neq 0 \mbox{ and if } a,b,c\in \bbbr \enspace . +\end{equation} + +If you wish to start a new paragraph immediately after a displayed +equation, insert a blank line so as to produce the required +indentation. If there is no new paragraph either do not insert +a blank line or code \verb|\noindent| immediately before +continuing the text. + +Please punctuate a displayed equation in the same way as other +ordinary text but with an \verb|\enspace| before end punctuation. + +Note that the sizes of the parentheses or other delimiter +symbols used in equations should ideally match the height of the +formulas being enclosed. This is automatically taken care of by +the following \LaTeX{} commands:\\[2mm] +\verb|\left(| or \verb|\left[| and +\verb|\right)| or \verb|\right]|. +% +\subsection{Italic and Roman Type in Math Mode} +% +\begin{alpherate} +\item +In math mode \LaTeX{} treats all letters as though they +were mathematical or physical variables, hence they are typeset as +characters of their own in +italics. However, for certain components of formulas, like short texts, +this would be incorrect and therefore coding in roman is required. +Roman should also be used for +subscripts and superscripts {\em in formulas\/} where these are +merely labels and not in themselves variables, +e.g. $T_{\mathrm{eff}}$ \emph{not} $T_{eff}$, +$T_{\mathrm K}$ \emph{not} $T_K$ (K = Kelvin), +$m_{\mathrm e}$ \emph{not} $m_e$ (e = electron). +However, do not code for roman +if the sub/superscripts represent variables, +e.g.\ $\sum_{i=1}^{n} a_{i}$. +\item +Please ensure that {\em physical units\/} (e.g.\ pc, erg s$^{-1}$ +K, cm$^{-3}$, W m$^{-2}$ Hz$^{-1}$, m kg s$^{-2}$ A$^{-2}$) and +{\em abbreviations\/} such as Ord, Var, GL, SL, sgn, const.\ +are always set in roman type. To ensure +this use the \verb|\mathrm| command: \verb|\mathrm{Hz}|. +On p.\ 44 of the {\em \LaTeX{} User's Guide \& Reference +Manual\/} by Leslie Lamport you will find the names of +common mathe\-matical functions, such as log, sin, exp, max and sup. +These should be coded as \verb|\log|, +\verb|\sin|, \verb|\exp|, \verb|\max|, \verb|\sup| +and will appear in roman automatically. +\item +Chemical symbols and formulas should be coded for roman, +e.g.\ Fe not $Fe$, H$_2$O not {\em H$_2$O}. +\item +Familiar foreign words and phrases, e.g.\ et al., +a priori, in situ, brems\-strah\-lung, eigenvalues should not be +italicized. +\end{alpherate} +% +\section{How to Edit Your Input (Source) File} +\label{refedit} +% +\subsection{Headings}\label{headings} +% +All words in headings should be capitalized except for conjunctions, +prepositions (e.g.\ on, of, by, and, or, but, from, with, without, +under) and definite and indefinite articles (the, a, an) unless they +appear at the beginning. Formula letters must be typeset as in the text. +% +\subsection{Capitalization and Non-capitalization} +% +\begin{alpherate} +\item +The following should always be capitalized: +\begin{itemize} +\item +Headings (see preceding Sect.\,\ref{headings}) +\item +Abbreviations and expressions +in the text such as Fig(s)., Table(s), Sect(s)., Chap(s)., +Theorem, Corollary, Definition etc. when used with numbers, e.g.\ +Fig.\,3, Table\,1, Theorem 2. +\end{itemize} +Please follow the special rules in Sect.\,\ref{abbrev} for referring to +equations. +\item +The following should {\em not\/} be capitalized: +\begin{itemize} +\item +The words figure(s), table(s), equation(s), theorem(s) in the text when +used without an accompanying number. +\item +Figure legends and table captions except for names and abbreviations. +\end{itemize} +\end{alpherate} +% +\subsection{Abbreviation of Words}\label{abbrev} +% +\begin{alpherate} +\item +The following {\em should} be abbreviated when they appear in running +text {\em unless\/} they come at the beginning of a sentence: Chap., +Sect., Fig.; e.g.\ The results are depicted in Fig.\,5. Figure 9 reveals +that \dots .\\ +{\em Please note\/}: Equations should usually be referred to solely by +their number in parentheses: e.g.\ (14). However, when the reference +comes at the beginning of a sentence, the unabbreviated word +``Equation'' should be used: e.g.\ Equation (14) is very important. +However, (15) makes it clear that \dots . +\item +If abbreviations of names or concepts are used +throughout the text, they should be defined at first occurrence, +e.g.\ Plurisubharmonic (PSH) Functions, Strong Optimization (SOPT) +Problem. +\end{alpherate} +% +\section{How to Code the Beginning of Your Contribution} +\label{contbegin} +% +The title of a single contribution (it is mandatory) should be coded as +follows: +\begin{verbatim} +\title{} +\end{verbatim} +All words in titles should be capitalized except for conjunctions, +prepositions (e.g.\ on, of, by, and, or, but, from, with, without, +under) and definite and indefinite articles (the, a, an) unless they +appear at the beginning. Formula letters must be typeset as in the text. +Titles have no end punctuation. + +If a long \verb|\title| must be divided please use the code \verb|\\| +(for new line). + +If you are to produce running heads for a specific volume the standard +(of no such running heads) is overwritten with the \verb|[runningheads]| +option in the \verb|\documentclass| line. For long titles that do not +fit in the single line of the running head a warning is generated. +You can specify an abbreviated title for the running head on odd pages +with the command +\begin{verbatim} +\titlerunning{} +\end{verbatim} + +There is also a possibility to change the text of the title that goes +into the table of contents (that's for volume editors only -- there is +no table of contents for a single contribution). For this use the +command +\begin{verbatim} +\toctitle{} +\end{verbatim} + +An optional subtitle may follow then: +\begin{verbatim} +\subtitle{} +\end{verbatim} + +Now the name(s) of the author(s) must be given: +\begin{verbatim} +\author{} +\end{verbatim} +Numbers referring to different addresses or affiliations are +to be attached to each author with the \verb|\inst{}| command. +If there is more than one author, the order is up to you; +the \verb|\and| command provides for the separation. + +If you have done this correctly, this entry now reads, for example: +\begin{verbatim} +\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}} +\end{verbatim} +The first name\footnote{Other initials are optional +and may be inserted if this is the usual +way of writing your name, e.g.\ Alfred J.~Holmes, E.~Henry Green.} +is followed by the surname. + +As for the title there exist two additional commands (again for volume +editors only) for a different author list. One for the running head +(on odd pages) -- if there is any: +\begin{verbatim} +\authorrunning{} +\end{verbatim} +And one for the table of contents where the +affiliation of each author is simply added in braces. +\begin{verbatim} +\tocauthor{} +\end{verbatim} + +Next the address(es) of institute(s), company etc. is (are) required. +If there is more than one address, the entries are numbered +automatically with \verb|\and|, in the order in which you type them. +Please make sure that the numbers match those placed next to +to the authors' names to reflect the affiliation. +\begin{verbatim} +\institute{ +\and +\and } +\end{verbatim} + +In addition, you can use +\begin{verbatim} +\email{} +\end{verbatim} +to provide your email address within \verb|\institute|. If you need to +typeset the tilde character -- e.g. for your web page in your unix +system's home directory -- the \verb|\homedir| command will happily do +this. Please note that, if your email address is given in your paper, +it will also be included in the meta data of the online version. +\enlargethispage*{6mm} + +\medskip +If footnote like things are needed anywhere in the contribution heading +please code +(immediately after the word where the footnote indicator should be +placed): +\begin{verbatim} +\thanks{} +\end{verbatim} +\verb|\thanks| may only appear in \verb|\title|, \verb|\author| +and \verb|\institute| to footnote anything. If there are two or more +footnotes or affiliation marks to a specific item separate them with +\verb|\fnmsep| (i.e. {\itshape f}oot\emph note \emph mark +\emph{sep}arator). + +\medskip\noindent +The command +\begin{verbatim} +\maketitle +\end{verbatim} +then formats the complete heading of your article. If you leave +it out the work done so far will produce \emph{no} text. + +Then the abstract should follow. Simply code +\begin{verbatim} +\begin{abstract} + +\end{abstract} +\end{verbatim} +or refer to the demonstration file {\tt llncs.dem} for an example or +to the {\em Sample Input\/} on p.~\pageref{samppage}. + +\subsubsection{Remark to Running Heads and the Table of Contents} +\leavevmode\\[\medskipamount] +If you are the author of a single contribution you normally have no +running heads and no table of contents. Both are done only by the editor +of the volume or at the printers. +% +\section{Special Commands for the Volume Editor} +The volume editor can produce a complete camera ready output including +running heads, a table of contents, preliminary text (frontmatter), and +index or glossary. For activating the running heads there is the class +option \verb|[runningheads]|. + +The table of contents of the volume is printed wherever +\verb|\tableofcontents| is placed. A simple compilation of all +contributions (fields \verb|\title| and \verb|\author|) is done. If you +wish to change this automatically produced list use the commands +\begin{verbatim} +\titlerunning \toctitle +\authorrunning \tocauthor +\end{verbatim} +to enhance the information in the specific contributions. See the +demonstration file \verb|llncs.dem| for examples. + +An additional structure can be added to the table of contents with the +\verb|\addtocmark{}| command. It has an optional numerical +argument, a digit from 1 through 3. 3 (the default) makes an unnumbered +chapter like entry in the table of contents. If you code +\verb|\addtocmark[2]{text}| the corresponding page number is listed +also, \verb|\addtocmark[1]{text}| even introduces a chapter number +beyond it. +% +\section{How to Code Your Text} +% +The contribution title and all headings should be capitalized +except for conjunctions, prepositions (e.g.\ on, of, by, and, or, but, +from, with, without, under) and definite and indefinite articles (the, +a, an) unless they appear at the beginning. Formula letters must be +typeset as in the text. + +Headings will be automatically numbered by the following codes.\\[2mm] +{\itshape Sample Input} +\begin{verbatim} +\section{This is a First-Order Title} +\subsection{This is a Second-Order Title} +\subsubsection{This is a Third-Order Title.} +\paragraph{This is a Fourth-Order Title.} +\end{verbatim} +\verb|\section| and \verb|\subsection| have no end punctuation.\\ +\verb|\subsubsection| and \verb|\paragraph| +need to be punctuated at the end. + +In addition to the above-mentioned headings your text may be structured +by subsections indicated by run-in headings (theorem-like environments). +All the theorem-like environments are numbered automatically +throughout the sections of your document -- each with its own counter. +If you want the theorem-like environments to use the same counter +just specify the documentclass option \verb|envcountsame|: +\begin{verbatim} +\documentclass[envcountsame]{llncs} +\end{verbatim} +If your first call for a theorem-like environment then is e.g. +\verb|\begin{lemma}|, it will be numbered 1; if corollary follows, +this will be numbered 2; if you then call lemma again, this will be +numbered 3. + +But in case you want to reset such counters to 1 in each section, +please specify the documentclass option \verb|envcountreset|: +\begin{verbatim} +\documentclass[envcountreset]{llncs} +\end{verbatim} + +Even a numbering on section level (including the section counter) is +possible with the documentclass option \verb|envcountsect|. + +\section{Predefined Theorem like Environments}\label{builtintheo} +The following variety of run-in headings are at your disposal: +\begin{alpherate} +\item +{\bfseries Bold} run-in headings with italicized text +as built-in environments: +\begin{verbatim} +\begin{corollary} \end{corollary} +\begin{lemma} \end{lemma} +\begin{proposition} \end{proposition} +\begin{theorem} \end{theorem} +\end{verbatim} +\item +The following generally appears as {\itshape italic} run-in heading: +\begin{verbatim} +\begin{proof} \qed \end{proof} +\end{verbatim} +It is unnumbered and may contain an eye catching square (call for that +with \verb|\qed|) before the environment ends. +\item +Further {\itshape italic} or {\bfseries bold} run-in headings with roman +environment body may also occur: +\begin{verbatim} +\begin{definition} \end{definition} +\begin{example} \end{example} +\begin{exercise} \end{exercise} +\begin{note} \end{note} +\begin{problem} \end{problem} +\begin{question} \end{question} +\begin{remark} \end{remark} +\begin{solution} \end{solution} +\end{verbatim} +\end{alpherate} + +\section{Defining your Own Theorem like Environments} +We have enhanced the standard \verb|\newtheorem| command and slightly +changed its syntax to get two new commands \verb|\spnewtheorem| and +\verb|\spnewtheorem*| that now can be used to define additional +environments. They require two additional arguments namely the type +style in which the keyword of the environment appears and second the +style for the text of your new environment. + +\verb|\spnewtheorem| can be used in two ways. +\subsection{Method 1 {\itshape (preferred)}} +You may want to create an environment that shares its counter +with another environment, say {\em main theorem\/} to be numbered like +the predefined {\em theorem\/}. In this case, use the syntax +\begin{verbatim} +\spnewtheorem{}[]{} +{}{} +\end{verbatim} + +\noindent +Here the environment with which the new environment should share its +counter is specified with the optional argument \verb|[]|. + +\paragraph{Sample Input} +\begin{verbatim} +\spnewtheorem{mainth}[theorem]{Main Theorem}{\bfseries}{\itshape} +\begin{theorem} The early bird gets the worm. \end{theorem} +\begin{mainth} The early worm gets eaten. \end{mainth} +\end{verbatim} +\medskip\noindent +{\em Sample Output} + +\medskip\noindent +{\bfseries Theorem 3.}\enspace {\em The early bird gets the worm.} + +\medskip\noindent +{\bfseries Main Theorem 4.} The early worm gets eaten. + +\bigskip +The sharing of the default counter (\verb|[theorem]|) is desired. If you +omit the optional second argument of \verb|\spnewtheorem| a separate +counter for your new environment is used throughout your document. + +\subsection[Method 2]{Method 2 {\itshape (assumes {\tt[envcountsect]} +documentstyle option)}} +\begin{verbatim} +\spnewtheorem{}{}[] +{}{} +\end{verbatim} + +\noindent +This defines a new environment \verb|| which prints the caption +\verb|| in the font \verb|| and the text itself in +the font \verb||. The environment is numbered beginning anew +with every new sectioning element you specify with the optional +parameter \verb||. + +\medskip\noindent +\paragraph{Example} \leavevmode + +\medskip\noindent +\verb|\spnewtheorem{joke}{Joke}[subsection]{\bfseries}{\rmfamily}| + +\medskip +\noindent defines a new environment called \verb|joke| which prints the +caption {\bfseries Joke} in boldface and the text in roman. The jokes are +numbered starting from 1 at the beginning of every subsection with the +number of the subsection preceding the number of the joke e.g. 7.2.1 for +the first joke in subsection 7.2. + +\subsection{Unnumbered Environments} +If you wish to have an unnumbered environment, please +use the syntax +\begin{verbatim} +\spnewtheorem*{}{}{}{} +\end{verbatim} + +\section{Program Codes} +In case you want to show pieces of program code, just use the +\verb|verbatim| environment or the \verb|verbatim| package of \LaTeX. +(There also exist various pretty printers for some programming +languages.) +% +\noindent +\subsection*{Sample Input {\rmfamily(of a simple +contribution)}}\label{samppage} +\begin{verbatim} +\title{Hamiltonian Mechanics} + +\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}} + +\institute{Princeton University, Princeton NJ 08544, USA +\and +Universit\'{e} de Paris-Sud, +Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\ +F-91405 Orsay Cedex, France} + +\maketitle +% +\begin{abstract} +This paragraph shall summarize the contents of the paper +in short terms. +\end{abstract} +% +\section{Fixed-Period Problems: The Sublinear Case} +% +With this chapter, the preliminaries are over, and we begin the +search for periodic solutions \dots +% +\subsection{Autonomous Systems} +% +In this section we will consider the case when the Hamiltonian +$H(x)$ \dots +% +\subsubsection*{The General Case: Nontriviality.} +% +We assume that $H$ is +$\left(A_{\infty}, B_{\infty}\right)$-subqua\-dra\-tic +at infinity, for some constant \dots +% +\paragraph{Notes and Comments.} +The first results on subharmonics were \dots +% +\begin{proposition} +Assume $H'(0)=0$ and $ H(0)=0$. Set \dots +\end{proposition} +\begin{proof}[of proposition] +Condition (8) means that, for every $\delta'>\delta$, there is +some $\varepsilon>0$ such that \dots \qed +\end{proof} +% +\begin{example}[\rmfamily (External forcing)] +Consider the system \dots +\end{example} +\begin{corollary} +Assume $H$ is $C^{2}$ and +$\left(a_{\infty}, b_{\infty}\right)$-subquadratic +at infinity. Let \dots +\end{corollary} +\begin{lemma} +Assume that $H$ is $C^{2}$ on $\bbbr^{2n}\backslash \{0\}$ +and that $H''(x)$ is \dots +\end{lemma} +\begin{theorem}[(Ghoussoub-Preiss)] +Let $X$ be a Banach Space and $\Phi:X\to\bbbr$ \dots +\end{theorem} +\begin{definition} +We shall say that a $C^{1}$ function $\Phi:X\to\bbbr$ +satisfies \dots +\end{definition} +\end{verbatim} +{\itshape Sample Output\/} (follows on the next page together with +examples of the above run-in headings) +\newcounter{save}\setcounter{save}{\value{section}} +{\def\addtocontents#1#2{}% +\def\addcontentsline#1#2#3{}% +\def\markboth#1#2{}% +% +\title{Hamiltonian Mechanics} + +\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}} + +\institute{Princeton University, Princeton NJ 08544, USA +\and +Universit\'{e} de Paris-Sud, +Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\ +F-91405 Orsay Cedex, France} + +\maketitle +% +\begin{abstract} +This paragraph shall summarize the contents of the paper +in short terms. +\end{abstract} +% +\section{Fixed-Period Problems: The Sublinear Case} +% +With this chapter, the preliminaries are over, and we begin the search +for periodic solutions \dots +% +\subsection{Autonomous Systems} +% +In this section we will consider the case when the Hamiltonian +$H(x)$ \dots +% +\subsubsection{The General Case: Nontriviality.} +% +We assume that $H$ is +$\left(A_{\infty}, B_{\infty}\right)$-subqua\-dra\-tic at +infinity, for some constant \dots +% +\paragraph{Notes and Comments.} +The first results on subharmonics were \dots +% +\begin{proposition} +Assume $H'(0)=0$ and $ H(0)=0$. Set \dots +\end{proposition} +\begin{proof}[of proposition] +Condition (8) means that, for every $\delta'>\delta$, there is +some $\varepsilon>0$ such that \dots \qed +\end{proof} +% +\begin{example}[{{\rmfamily External forcing}}] +Consider the system \dots +\end{example} +\begin{corollary} +Assume $H$ is $C^{2}$ and +$\left(a_{\infty}, b_{\infty}\right)$-subquadratic +at infinity. Let \dots +\end{corollary} +\begin{lemma} +Assume that $H$ is $C^{2}$ on $\bbbr^{2n}\backslash \{0\}$ +and that $H''(x)$ is \dots +\end{lemma} +\begin{theorem}[Ghoussoub-Preiss] +Let $X$ be a Banach Space and $\Phi:X\to\bbbr$ \dots +\end{theorem} +\begin{definition} +We shall say that a $C^{1}$ function $\Phi:X\to\bbbr$ satisfies \dots +\end{definition} +% +}\setcounter{section}{\value{save}} +\section{Fine Tuning of the Text} +% +The following should be used to improve the readability of the text: +\begin{flushleft} +\begin{tabular}{@{}p{.19\textwidth}p{.79\textwidth}} +\verb|\,| & a thin space, e.g.\ between numbers or between units + and num\-bers; a line division will not be made + following this space\\ +\verb|--| & en dash; two strokes, without a space at either end\\ +\verb*| -- |& en dash; two strokes, with a space at either end\\ +\verb|-| & hyphen; one stroke, no space at either end\\ +\verb|$-$| & minus, in the text {\em only} \\[8mm] +{\em Input} & \verb|21\,$^{\circ}$C etc.,|\\ + & \verb|Dr h.\,c.\,Rockefellar-Smith \dots|\\ + & \verb|20,000\,km and Prof.\,Dr Mallory \dots|\\ + & \verb|1950--1985 \dots|\\ + & \verb|this -- written on a computer -- is now printed|\\ + & \verb|$-30$\,K \dots|\\[3mm] +{\em Output}& 21\,$^{\circ}$C etc., Dr h.\,c.\,Rockefellar-Smith \dots\\ + & 20,000\,km and Prof.\,Dr Mallory \dots\\ + & 1950--1985 \dots\\ + & this -- written on a computer -- is now printed\\ + & $-30$\,K \dots +\end{tabular} +\end{flushleft} +% +\section {Special Typefaces} +% +Normal type (roman text) need not be coded. {\itshape Italic} +(\verb|{\em }| better still \verb|\emph{}|) or, if +necessary, {\bfseries boldface} should be used for emphasis.\\[6pt] +\begin{minipage}[t]{\textwidth} +\begin{flushleft} +\begin{tabular}{@{}p{.25\textwidth}@{\hskip6pt}p{.73\textwidth}@{}} +\verb|{\itshape Text}| & {\itshape Italicized Text}\\[2pt] +\verb|{\em Text}| & {\em Emphasized Text -- + if you would like to emphasize a {\em definition} within an + italicized text (e.g.\ of a {\em theorem)} you should code the + expression to be emphasized by} \verb|\em|.\\[2pt] +\verb|{\bfseries Text}|& {\bfseries Important Text}\\[2pt] +\verb|\vec{Symbol}| & Vectors may only appear in math mode. The default + \LaTeX{} vector symbol has been adapted\footnotemark\ + to LLNCS conventions.\\[2pt] + & \verb|$\vec{A \times B\cdot C}| yields $\vec{A\times B\cdot C}$\\ + & \verb|$\vec{A}^{T} \otimes \vec{B} \otimes|\\ + & \verb|\vec{\hat{D}}$|yields $\vec{A}^{T} \otimes \vec{B} \otimes +\vec{\hat{D}}$ +\end{tabular} +\end{flushleft} +\end{minipage} + +\footnotetext{If you absolutely must revive the original \LaTeX{} +design of the vector symbol (as an arrow accent), please specify the +option \texttt{[orivec]} in the \texttt{documentclass} line.} +\newpage +% +\section {Footnotes} +% +Footnotes within the text should be coded: +\begin{verbatim} +\footnote{Text} +\end{verbatim} +{\itshape Sample Input} +\begin{flushleft} +Text with a footnote\verb|\footnote{The |{\tt footnote is automatically +numbered.}\verb|}| and text continues \dots +\end{flushleft} +{\itshape Sample Output} +\begin{flushleft} +Text with a footnote\footnote{The footnote is automatically numbered.} +and text continues \dots +\end{flushleft} +% +\section {Lists} +% +Please code lists as described below:\\[2mm] +{\itshape Sample Input} +\begin{verbatim} +\begin{enumerate} + \item First item + \item Second item + \begin{enumerate} + \item First nested item + \item Second nested item + \end{enumerate} + \item Third item +\end{enumerate} +\end{verbatim} +{\itshape Sample Output} + \begin{enumerate} +\item First item +\item Second item + \begin{enumerate} + \item First nested item + \item Second nested item + \end{enumerate} +\item Third item +\end{enumerate} +% +\section {Figures} +% +Figure environments should be inserted after (not in) +the paragraph in which the figure is first mentioned. +They will be numbered automatically. + +Preferably the images should be enclosed as PostScript files -- best as +EPS data using the epsfig package. + +If you cannot include them into your output this way and use other +techniques for a separate production, +the figures (line drawings and those containing halftone inserts +as well as halftone figures) {\em should not be pasted into your +laserprinter output}. They should be enclosed separately in camera-ready +form (original artwork, glossy prints, photographs and/or slides). The +lettering should be suitable for reproduction, and after a +probably necessary reduction the height of capital letters should be at +least 1.8\,mm and not more than 2.5\,mm. +Check that lines and other details are uniformly black and +that the lettering on figures is clearly legible. + +To leave the desired amount of space for the height of +your figures, please use the coding described below. +As can be seen in the output, we will automatically +provide 1\,cm space above and below the figure, +so that you should only leave the space equivalent to the size of the +figure itself. Please note that ``\verb|x|'' in the following +coding stands for the actual height of the figure: +\begin{verbatim} +\begin{figure} +\vspace{x cm} +\caption[ ]{...text of caption...} (Do type [ ]) +\end{figure} +\end{verbatim} +\begin{flushleft} +{\itshape Sample Input} +\end{flushleft} +\begin{verbatim} +\begin{figure} +\vspace{2.5cm} +\caption{This is the caption of the figure displaying a white +eagle and a white horse on a snow field} +\end{figure} +\end{verbatim} +\begin{flushleft} +{\itshape Sample Output} +\end{flushleft} +\begin{figure} +\vspace{2.5cm} +\caption{This is the caption of the figure displaying a white eagle and +a white horse on a snow field} +\end{figure} +% +\section{Tables} +% +Table captions should be treated +in the same way as figure legends, except that +the table captions appear {\itshape above} the tables. The tables +will be numbered automatically. +% +\subsection{Tables Coded with \protect\LaTeX{}} +% +Please use the following coding:\\[2mm] +{\itshape Sample Input} +\begin{verbatim} +\begin{table} +\caption{Critical $N$ values} +\begin{tabular}{llllll} +\hline\noalign{\smallskip} +${\mathrm M}_\odot$ & $\beta_{0}$ & $T_{\mathrm c6}$ & $\gamma$ + & $N_{\mathrm{crit}}^{\mathrm L}$ + & $N_{\mathrm{crit}}^{\mathrm{Te}}$\\ +\noalign{\smallskip} +\hline +\noalign{\smallskip} + 30 & 0.82 & 38.4 & 35.7 & 154 & 320 \\ + 60 & 0.67 & 42.1 & 34.7 & 138 & 340 \\ +120 & 0.52 & 45.1 & 34.0 & 124 & 370 \\ +\hline +\end{tabular} +\end{table} +\end{verbatim} + +\medskip\noindent{\itshape Sample Output} +\begin{table} +\caption{Critical $N$ values} +\begin{center} +\renewcommand{\arraystretch}{1.4} +\setlength\tabcolsep{3pt} +\begin{tabular}{llllll} +\hline\noalign{\smallskip} +${\mathrm M}_\odot$ & $\beta_{0}$ & $T_{\mathrm c6}$ & $\gamma$ + & $N_{\mathrm{crit}}^{\mathrm L}$ + & $N_{\mathrm{crit}}^{\mathrm{Te}}$\\ +\noalign{\smallskip} +\hline +\noalign{\smallskip} + 30 & 0.82 & 38.4 & 35.7 & 154 & 320 \\ + 60 & 0.67 & 42.1 & 34.7 & 138 & 340 \\ +120 & 0.52 & 45.1 & 34.0 & 124 & 370 \\ +\hline +\end{tabular} +\end{center} +\end{table} + +Before continuing your text you need an empty line. \dots + +\vspace{3mm} +For further information you will find a complete description of +the tabular environment +on p.~62~ff. and p.~204 of the {\em \LaTeX{} User's Guide \& Reference +Manual\/} by Leslie Lamport. +% +\subsection{Tables Not Coded with \protect\LaTeX{}} +% +If you do not wish to code your table using \LaTeX{} +but prefer to have it reproduced separately, +proceed as for figures and use the following coding:\\[2mm] +{\itshape Sample Input} +\begin{verbatim} +\begin{table} +\caption{text of your caption} +\vspace{x cm} % the actual height needed for your table +\end{table} +\end{verbatim} +% +\subsection{Signs and Characters} +% +\subsubsection*{Special Signs.} +% +You may need to use special signs. The available ones are listed in the +{\em \LaTeX{} User's Guide \& Reference Manual\/} by Leslie Lamport, +pp.~41\,ff. +We have created further symbols for math mode (enclosed in \$): +\begin{center} +\begin{tabular}{l@{\hspace{1em}yields\hspace{1em}} +c@{\hspace{3em}}l@{\hspace{1em}yields\hspace{1em}}c} +\verb|\grole| & $\grole$ & \verb|\getsto| & $\getsto$\\ +\verb|\lid| & $\lid$ & \verb|\gid| & $\gid$ +\end{tabular} +\end{center} +% +\subsubsection*{Gothic (Fraktur).} +% +If gothic letters are {\itshape necessary}, please use those of the +relevant \AmSTeX{} alphabet which are available using the amstex +package of the American Mathematical Society. + +In \LaTeX{} only the following gothic letters are available: +\verb|$\Re$| yields $\Re$ and \verb|$\Im$| yields $\Im$. These should +{\itshape not\/} be used when you need gothic letters for your contribution. +Use \AmSTeX{} gothic as explained above. For the real and the imaginary +parts of a complex number within math mode you should use instead: +\verb|$\mathrm{Re}$| (which yields Re) or \verb|$\mathrm{Im}$| (which +yields Im). +% +\subsubsection*{Script.} +% +For script capitals use the coding +\begin{center} +\begin{tabular}{l@{\hspace{1em}which yields\hspace{1em}}c} +\verb|$\mathcal{AB}$| & $\mathcal{AB}$ +\end{tabular} +\end{center} +(see p.~42 of the \LaTeX{} book). +% +\subsubsection*{Special Roman.} +% +If you need other symbols than those below, you could use +the blackboard bold characters of \AmSTeX{}, but there might arise +capacity problems +in loading additional \AmSTeX{} fonts. Therefore we created +the blackboard bold characters listed below. +Some of them are not esthetically +satisfactory. This need not deter you from using them: +in the final printed form they will be +replaced by the well-designed MT (monotype) characters of +the phototypesetting machine. +\begin{flushleft} +\begin{tabular}{@{}ll@{ yields } +c@{\hspace{1.em}}ll@{ yields }c} +\verb|\bbbc| & (complex numbers) & $\bbbc$ + & \verb|\bbbf| & (blackboard bold F) & $\bbbf$\\ +\verb|\bbbh| & (blackboard bold H) & $\bbbh$ + & \verb|\bbbk| & (blackboard bold K) & $\bbbk$\\ +\verb|\bbbm| & (blackboard bold M) & $\bbbm$ + & \verb|\bbbn| & (natural numbers N) & $\bbbn$\\ +\verb|\bbbp| & (blackboard bold P) & $\bbbp$ + & \verb|\bbbq| & (rational numbers) & $\bbbq$\\ +\verb|\bbbr| & (real numbers) & $\bbbr$ + & \verb|\bbbs| & (blackboard bold S) & $\bbbs$\\ +\verb|\bbbt| & (blackboard bold T) & $\bbbt$ + & \verb|\bbbz| & (whole numbers) & $\bbbz$\\ +\verb|\bbbone| & (symbol one) & $\bbbone$ +\end{tabular} +\end{flushleft} +\begin{displaymath} +\begin{array}{c} +\bbbc^{\bbbc^{\bbbc}} \otimes +\bbbf_{\bbbf_{\bbbf}} \otimes +\bbbh_{\bbbh_{\bbbh}} \otimes +\bbbk_{\bbbk_{\bbbk}} \otimes +\bbbm^{\bbbm^{\bbbm}} \otimes +\bbbn_{\bbbn_{\bbbn}} \otimes +\bbbp^{\bbbp^{\bbbp}}\\[2mm] +\otimes +\bbbq_{\bbbq_{\bbbq}} \otimes +\bbbr^{\bbbr^{\bbbr}} \otimes +\bbbs^{\bbbs_{\bbbs}} \otimes +\bbbt^{\bbbt^{\bbbt}} \otimes +\bbbz \otimes +\bbbone^{\bbbone_{\bbbone}} +\end{array} +\end{displaymath} +% +\section{References} +\label{refer} +% +There are three reference systems available; only one, of course, +should be used for your contribution. With each system (by +number only, by letter-number or by author-year) a reference list +containing all citations in the +text, should be included at the end of your contribution placing the +\LaTeX{} environment \verb|thebibliography| there. +For an overall information on that environment +see the {\em \LaTeX{} User's Guide \& Reference +Manual\/} by Leslie Lamport, p.~71. + +There is a special {\sc Bib}\TeX{} style for LLNCS that works along +with the class: \verb|splncs.bst| +-- call for it with a line \verb|\bibliographystyle{splncs}|. +If you plan to use another {\sc Bib}\TeX{} style you are customed to, +please specify the option \verb|[oribibl]| in the +\verb|documentclass| line, like: +\begin{verbatim} +\documentclass[oribibl]{llncs} +\end{verbatim} +This will retain the original \LaTeX{} code for the bibliographic +environment and the \verb|\cite| mechanism that many {\sc Bib}\TeX{} +applications rely on. +% +\subsection{References by Letter-Number or by Number Only} +% +References are cited in the text -- using the \verb|\cite| +command of \LaTeX{} -- by number or by letter-number in square +brackets, e.g.\ [1] or [E1, S2], [P1], according to your use of the +\verb|\bibitem| command in the \verb|thebibliography| environment. The +coding is as follows: if you choose your own label for the sources by +giving an optional argument to the \verb|\bibitem| command the citations +in the text are marked with the label you supplied. Otherwise a simple +numbering is done, which is preferred. +\begin{verbatim} +The results in this section are a refined version +of \cite{clar:eke}; the minimality result of Proposition~14 +was the first of its kind. +\end{verbatim} +The above input produces the citation: ``\dots\ refined version of +[CE1]; the min\-i\-mality\dots''. Then the \verb|\bibitem| entry of +the \verb|thebibliography| environment should read: +\begin{verbatim} +\begin{thebibliography}{[MT1]} +. +. +\bibitem[CE1]{clar:eke} +Clarke, F., Ekeland, I.: +Nonlinear oscillations and boundary-value problems for +Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) +. +. +\end{thebibliography} +\end{verbatim} +The complete bibliography looks like this: +% +\begin{thebibliography}{[MT1]} +% +\bibitem[CE1]{clar:eke} +Clarke, F., Ekeland, I.: +Nonlinear oscillations and +boundary-value problems for Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) +% +\bibitem[CE2]{clar:eke:2} +Clarke, F., Ekeland, I.: +Solutions p\'{e}riodiques, du +p\'{e}riode donn\'{e}e, des \'{e}quations hamiltoniennes. +Note CRAS Paris 287, 1013--1015 (1978) +% +\bibitem[MT1]{mich:tar} +Michalek, R., Tarantello, G.: +Subharmonic solutions with prescribed minimal +period for nonautonomous Hamiltonian systems. +J. Diff. Eq. 72, 28--55 (1988) +% +\bibitem[Ta1]{tar} +Tarantello, G.: +Subharmonic solutions for Hamiltonian +systems via a $\bbbz_{p}$ pseudoindex theory. +Annali di Matematica Pura (to appear) +% +\bibitem[Ra1]{rab} +Rabinowitz, P.: +On subharmonic solutions of a Hamiltonian system. +Comm. Pure Appl. Math. 33, 609--633 (1980) +\end{thebibliography} +% +\subsubsection*{Number-Only System.} +% +For this preferred system do not use the optional argument +in the \verb|\bibitem| command: then, only numbers will +appear for the citations in the text (enclosed in square brackets) +as well as for the marks in your +bibliography (here the number is only end-punctuated without +square brackets). + +Subsequent citation numbers in the text are collapsed to ranges. +Non-numeric and undefined labels are handled correctly but no sorting is +done. + +E.g., \verb|\cite{n1,n3,n2,n3,n4,n5,foo,n1,n2,n3,?,n4,n5}| -- where +\verb|n|$x$ is the key of the $x^{\mathrm{th}}$ \verb|\bibitem| +command in sequence, \verb|foo| is the key of a \verb|\bibitem| with an +optional argument, and \verb|?| is an undefined reference -- gives +1,3,2-5,foo,1-3,?,4,5 as the citation reference. + +\begin{verbatim} +\begin{thebibliography}{1} +\bibitem {clar:eke} +Clarke, F., Ekeland, I.: +Nonlinear oscillations and boundary-value problems for +Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) +\end{thebibliography} +\end{verbatim} +% +\subsection{Author-Year System} +% +References are cited in the text by name and year in parentheses +and should look as follows: +(Smith 1970, 1980), (Ekeland et al. 1985, Theorem 2), (Jones and Jaffe +1986; Farrow 1988, Chap.\,2). If the name is part of the sentence +only the year may appear in parentheses, +e.g.\ Ekeland et al. (1985, Sect.\,2.1) +The reference list should contain all citations occurring in the text, +ordered alphabetically by surname (with initials following). If there +are several works by the same author(s) the references should be listed +in the appropriate order indicated below: +\begin{alpherate} +\setlength{\hfuzz}{5pt} +\item +One author: list works chronologically; +\item +Author and same co-author(s): list works chronologically; +\item +Author and different co-authors: list works alphabetically +according to co-authors. +\end{alpherate} +If there are several works by the same author(s) and in the same year, +but which are cited separately, they should be distinguished by the use +of ``a'', ``b'' etc., e.g.\ (Smith 1982a), (Ekeland et al. 1982b). +% +\subsubsection*{How to Code Author-Year System.} +% +If you want to use this system you have to specify the option +\verb|[citeauthoryear]| in the \verb|documentclass|, like: +\begin{verbatim} +\documentclass[citeauthoryear]{llncs} +\end{verbatim} +Write your citations in the text explicitly except for the year, leaving +that up to \LaTeX{} with the \verb|\cite| command. Then give only the +appropriate year as the optional argument (i.e. the label in square +brackets) with the \verb|\bibitem| command(s).\\[2mm] +{\itshape Sample Input} +\begin{verbatim} +The results in this section are a refined version +of Clarke and Ekeland (\cite{clar:eke}); the minimality result of +Proposition~14 was the first of its kind. +\end{verbatim} +The above input produces the citation: ``\dots\ refined version of +Clarke and Ekeland (1982); the minimality\dots''. Then the +\verb|\bibitem| entry of \verb|clar:eke| in the \verb|thebibliography| +environment should read: +\begin{verbatim} +\begin{thebibliography}{} % (do not forget {}) +. +. +\bibitem[1982]{clar:eke} +Clarke, F., Ekeland, I.: +Nonlinear oscillations and boundary-value problems for +Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) +. +. +\end{thebibliography} +\end{verbatim} +{\itshape Sample Output} +\bibauthoryear +% +\end{document} diff --git a/paper/llncs2e/llncs.dvi b/paper/llncs2e/llncs.dvi new file mode 100644 index 000000000..2fc782f1f Binary files /dev/null and b/paper/llncs2e/llncs.dvi differ diff --git a/paper/llncs2e/llncs.ind b/paper/llncs2e/llncs.ind new file mode 100644 index 000000000..70d4a36b4 --- /dev/null +++ b/paper/llncs2e/llncs.ind @@ -0,0 +1,349 @@ +% This is LLNCS.IND the handmade demonstration +% file for an author index from Springer-Verlag +% for Lecture Notes in Computer Science, +% version 2.2 for LaTeX2e +% +\begin{theindex} +\item Abt~I. \idxquad{7} +\item Ahmed~T. \idxquad{3} +\item Andreev~V. \idxquad{24} +\item Andrieu~B. \idxquad{27} +\item Arpagaus~M. \idxquad{34} +\indexspace +\item Babaev~A. \idxquad{25} +\item B\"arwolff~A. \idxquad{33} +\item B\'an~J. \idxquad{17} +\item Baranov~P. \idxquad{24} +\item Barrelet~E. \idxquad{28} +\item Bartel~W. \idxquad{11} +\item Bassler~U. \idxquad{28} +\item Beck~H.P. \idxquad{35} +\item Behrend~H.-J. \idxquad{11} +\item Berger~Ch. \idxquad{1} +\item Bergstein~H. \idxquad{1} +\item Bernardi~G. \idxquad{28} +\item Bernet~R. \idxquad{34} +\item Besan\c con~M. \idxquad{9} +\item Biddulph~P. \idxquad{22} +\item Binder~E. \idxquad{11} +\item Bischoff~A. \idxquad{33} +\item Blobel~V. \idxquad{13} +\item Borras~K. \idxquad{8} +\item Bosetti~P.C. \idxquad{2} +\item Boudry~V. \idxquad{27} +\item Brasse~F. \idxquad{11} +\item Braun~U. \idxquad{2} +\item Braunschweig~A. \idxquad{1} +\item Brisson~V. \idxquad{26} +\item B\"ungener~L. \idxquad{13} +\item B\"urger~J. \idxquad{11} +\item B\"usser~F.W. \idxquad{13} +\item Buniatian~A. \idxquad{11,37} +\item Buschhorn~G. \idxquad{25} +\indexspace +\item Campbell~A.J. \idxquad{1} +\item Carli~T. \idxquad{25} +\item Charles~F. \idxquad{28} +\item Clarke~D. \idxquad{5} +\item Clegg~A.B. \idxquad{18} +\item Colombo~M. \idxquad{8} +\item Courau~A. \idxquad{26} +\item Coutures~Ch. \idxquad{9} +\item Cozzika~G. \idxquad{9} +\item Criegee~L. \idxquad{11} +\item Cvach~J. \idxquad{27} +\indexspace +\item Dagoret~S. \idxquad{28} +\item Dainton~J.B. \idxquad{19} +\item Dann~A.W.E. \idxquad{22} +\item Dau~W.D. \idxquad{16} +\item Deffur~E. \idxquad{11} +\item Delcourt~B. \idxquad{26} +\item Buono~Del~A. \idxquad{28} +\item Devel~M. \idxquad{26} +\item De Roeck~A. \idxquad{11} +\item Dingus~P. \idxquad{27} +\item Dollfus~C. \idxquad{35} +\item Dreis~H.B. \idxquad{2} +\item Drescher~A. \idxquad{8} +\item D\"ullmann~D. \idxquad{13} +\item D\"unger~O. \idxquad{13} +\item Duhm~H. \idxquad{12} +\indexspace +\item Ebbinghaus~R. \idxquad{8} +\item Eberle~M. \idxquad{12} +\item Ebert~J. \idxquad{32} +\item Ebert~T.R. \idxquad{19} +\item Efremenko~V. \idxquad{23} +\item Egli~S. \idxquad{35} +\item Eichenberger~S. \idxquad{35} +\item Eichler~R. \idxquad{34} +\item Eisenhandler~E. \idxquad{20} +\item Ellis~N.N. \idxquad{3} +\item Ellison~R.J. \idxquad{22} +\item Elsen~E. \idxquad{11} +\item Evrard~E. \idxquad{4} +\indexspace +\item Favart~L. \idxquad{4} +\item Feeken~D. \idxquad{13} +\item Felst~R. \idxquad{11} +\item Feltesse~A. \idxquad{9} +\item Fensome~I.F. \idxquad{3} +\item Ferrarotto~F. \idxquad{31} +\item Flamm~K. \idxquad{11} +\item Flauger~W. \idxquad{11} +\item Flieser~M. \idxquad{25} +\item Fl\"ugge~G. \idxquad{2} +\item Fomenko~A. \idxquad{24} +\item Fominykh~B. \idxquad{23} +\item Form\'anek~J. \idxquad{30} +\item Foster~J.M. \idxquad{22} +\item Franke~G. \idxquad{11} +\item Fretwurst~E. \idxquad{12} +\indexspace +\item Gabathuler~E. \idxquad{19} +\item Gamerdinger~K. \idxquad{25} +\item Garvey~J. \idxquad{3} +\item Gayler~J. \idxquad{11} +\item Gellrich~A. \idxquad{13} +\item Gennis~M. \idxquad{11} +\item Genzel~H. \idxquad{1} +\item Godfrey~L. \idxquad{7} +\item Goerlach~U. \idxquad{11} +\item Goerlich~L. \idxquad{6} +\item Gogitidze~N. \idxquad{24} +\item Goodall~A.M. \idxquad{19} +\item Gorelov~I. \idxquad{23} +\item Goritchev~P. \idxquad{23} +\item Grab~C. \idxquad{34} +\item Gr\"assler~R. \idxquad{2} +\item Greenshaw~T. \idxquad{19} +\item Greif~H. \idxquad{25} +\item Grindhammer~G. \idxquad{25} +\indexspace +\item Haack~J. \idxquad{33} +\item Haidt~D. \idxquad{11} +\item Hamon~O. \idxquad{28} +\item Handschuh~D. \idxquad{11} +\item Hanlon~E.M. \idxquad{18} +\item Hapke~M. \idxquad{11} +\item Harjes~J. \idxquad{11} +\item Haydar~R. \idxquad{26} +\item Haynes~W.J. \idxquad{5} +\item Hedberg~V. \idxquad{21} +\item Heinzelmann~G. \idxquad{13} +\item Henderson~R.C.W. \idxquad{18} +\item Henschel~H. \idxquad{33} +\item Herynek~I. \idxquad{29} +\item Hildesheim~W. \idxquad{11} +\item Hill~P. \idxquad{11} +\item Hilton~C.D. \idxquad{22} +\item Hoeger~K.C. \idxquad{22} +\item Huet~Ph. \idxquad{4} +\item Hufnagel~H. \idxquad{14} +\item Huot~N. \idxquad{28} +\indexspace +\item Itterbeck~H. \idxquad{1} +\indexspace +\item Jabiol~M.-A. \idxquad{9} +\item Jacholkowska~A. \idxquad{26} +\item Jacobsson~C. \idxquad{21} +\item Jansen~T. \idxquad{11} +\item J\"onsson~L. \idxquad{21} +\item Johannsen~A. \idxquad{13} +\item Johnson~D.P. \idxquad{4} +\item Jung~H. \idxquad{2} +\indexspace +\item Kalmus~P.I.P. \idxquad{20} +\item Kasarian~S. \idxquad{11} +\item Kaschowitz~R. \idxquad{2} +\item Kathage~U. \idxquad{16} +\item Kaufmann~H. \idxquad{33} +\item Kenyon~I.R. \idxquad{3} +\item Kermiche~S. \idxquad{26} +\item Kiesling~C. \idxquad{25} +\item Klein~M. \idxquad{33} +\item Kleinwort~C. \idxquad{13} +\item Knies~G. \idxquad{11} +\item Ko~W. \idxquad{7} +\item K\"ohler~T. \idxquad{1} +\item Kolanoski~H. \idxquad{8} +\item Kole~F. \idxquad{7} +\item Kolya~S.D. \idxquad{22} +\item Korbel~V. \idxquad{11} +\item Korn~M. \idxquad{8} +\item Kostka~P. \idxquad{33} +\item Kotelnikov~S.K. \idxquad{24} +\item Krehbiel~H. \idxquad{11} +\item Kr\"ucker~D. \idxquad{2} +\item Kr\"uger~U. \idxquad{11} +\item Kubenka~J.P. \idxquad{25} +\item Kuhlen~M. \idxquad{25} +\item Kur\v{c}a~T. \idxquad{17} +\item Kurzh\"ofer~J. \idxquad{8} +\item Kuznik~B. \idxquad{32} +\indexspace +\item Lamarche~F. \idxquad{27} +\item Lander~R. \idxquad{7} +\item Landon~M.P.J. \idxquad{20} +\item Lange~W. \idxquad{33} +\item Lanius~P. \idxquad{25} +\item Laporte~J.F. \idxquad{9} +\item Lebedev~A. \idxquad{24} +\item Leuschner~A. \idxquad{11} +\item Levonian~S. \idxquad{11,24} +\item Lewin~D. \idxquad{11} +\item Ley~Ch. \idxquad{2} +\item Lindner~A. \idxquad{8} +\item Lindstr\"om~G. \idxquad{12} +\item Linsel~F. \idxquad{11} +\item Lipinski~J. \idxquad{13} +\item Loch~P. \idxquad{11} +\item Lohmander~H. \idxquad{21} +\item Lopez~G.C. \idxquad{20} +\indexspace +\item Magnussen~N. \idxquad{32} +\item Mani~S. \idxquad{7} +\item Marage~P. \idxquad{4} +\item Marshall~R. \idxquad{22} +\item Martens~J. \idxquad{32} +\item Martin~A.@ \idxquad{19} +\item Martyn~H.-U. \idxquad{1} +\item Martyniak~J. \idxquad{6} +\item Masson~S. \idxquad{2} +\item Mavroidis~A. \idxquad{20} +\item McMahon~S.J. \idxquad{19} +\item Mehta~A. \idxquad{22} +\item Meier~K. \idxquad{15} +\item Mercer~D. \idxquad{22} +\item Merz~T. \idxquad{11} +\item Meyer~C.A. \idxquad{35} +\item Meyer~H. \idxquad{32} +\item Meyer~J. \idxquad{11} +\item Mikocki~S. \idxquad{6,26} +\item Milone~V. \idxquad{31} +\item Moreau~F. \idxquad{27} +\item Moreels~J. \idxquad{4} +\item Morris~J.V. \idxquad{5} +\item M\"uller~K. \idxquad{35} +\item Murray~S.A. \idxquad{22} +\indexspace +\item Nagovizin~V. \idxquad{23} +\item Naroska~B. \idxquad{13} +\item Naumann~Th. \idxquad{33} +\item Newton~D. \idxquad{18} +\item Neyret~D. \idxquad{28} +\item Nguyen~A. \idxquad{28} +\item Niebergall~F. \idxquad{13} +\item Nisius~R. \idxquad{1} +\item Nowak~G. \idxquad{6} +\item Nyberg~M. \idxquad{21} +\indexspace +\item Oberlack~H. \idxquad{25} +\item Obrock~U. \idxquad{8} +\item Olsson~J.E. \idxquad{11} +\item Ould-Saada~F. \idxquad{13} +\indexspace +\item Pascaud~C. \idxquad{26} +\item Patel~G.D. \idxquad{19} +\item Peppel~E. \idxquad{11} +\item Phillips~H.T. \idxquad{3} +\item Phillips~J.P. \idxquad{22} +\item Pichler~Ch. \idxquad{12} +\item Pilgram~W. \idxquad{2} +\item Pitzl~D. \idxquad{34} +\item Prell~S. \idxquad{11} +\item Prosi~R. \idxquad{11} +\indexspace +\item R\"adel~G. \idxquad{11} +\item Raupach~F. \idxquad{1} +\item Rauschnabel~K. \idxquad{8} +\item Reinshagen~S. \idxquad{11} +\item Ribarics~P. \idxquad{25} +\item Riech~V. \idxquad{12} +\item Riedlberger~J. \idxquad{34} +\item Rietz~M. \idxquad{2} +\item Robertson~S.M. \idxquad{3} +\item Robmann~P. \idxquad{35} +\item Roosen~R. \idxquad{4} +\item Royon~C. \idxquad{9} +\item Rudowicz~M. \idxquad{25} +\item Rusakov~S. \idxquad{24} +\item Rybicki~K. \idxquad{6} +\indexspace +\item Sahlmann~N. \idxquad{2} +\item Sanchez~E. \idxquad{25} +\item Savitsky~M. \idxquad{11} +\item Schacht~P. \idxquad{25} +\item Schleper~P. \idxquad{14} +\item von Schlippe~W. \idxquad{20} +\item Schmidt~D. \idxquad{32} +\item Schmitz~W. \idxquad{2} +\item Sch\"oning~A. \idxquad{11} +\item Schr\"oder~V. \idxquad{11} +\item Schulz~M. \idxquad{11} +\item Schwab~B. \idxquad{14} +\item Schwind~A. \idxquad{33} +\item Seehausen~U. \idxquad{13} +\item Sell~R. \idxquad{11} +\item Semenov~A. \idxquad{23} +\item Shekelyan~V. \idxquad{23} +\item Shooshtari~H. \idxquad{25} +\item Shtarkov~L.N. \idxquad{24} +\item Siegmon~G. \idxquad{16} +\item Siewert~U. \idxquad{16} +\item Skillicorn~I.O. \idxquad{10} +\item Smirnov~P. \idxquad{24} +\item Smith~J.R. \idxquad{7} +\item Smolik~L. \idxquad{11} +\item Spitzer~H. \idxquad{13} +\item Staroba~P. \idxquad{29} +\item Steenbock~M. \idxquad{13} +\item Steffen~P. \idxquad{11} +\item Stella~B. \idxquad{31} +\item Stephens~K. \idxquad{22} +\item St\"osslein~U. \idxquad{33} +\item Strachota~J. \idxquad{11} +\item Straumann~U. \idxquad{35} +\item Struczinski~W. \idxquad{2} +\indexspace +\item Taylor~R.E. \idxquad{36,26} +\item Tchernyshov~V. \idxquad{23} +\item Thiebaux~C. \idxquad{27} +\item Thompson~G. \idxquad{20} +\item Tru\"ol~P. \idxquad{35} +\item Turnau~J. \idxquad{6} +\indexspace +\item Urban~L. \idxquad{25} +\item Usik~A. \idxquad{24} +\indexspace +\item Valkarova~A. \idxquad{30} +\item Vall\'ee~C. \idxquad{28} +\item Van Esch~P. \idxquad{4} +\item Vartapetian~A. \idxquad{11} +\item Vazdik~Y. \idxquad{24} +\item Verrecchia~P. \idxquad{9} +\item Vick~R. \idxquad{13} +\item Vogel~E. \idxquad{1} +\indexspace +\item Wacker~K. \idxquad{8} +\item Walther~A. \idxquad{8} +\item Weber~G. \idxquad{13} +\item Wegner~A. \idxquad{11} +\item Wellisch~H.P. \idxquad{25} +\item West~L.R. \idxquad{3} +\item Willard~S. \idxquad{7} +\item Winde~M. \idxquad{33} +\item Winter~G.-G. \idxquad{11} +\item Wolff~Th. \idxquad{34} +\item Wright~A.E. \idxquad{22} +\item Wulff~N. \idxquad{11} +\indexspace +\item Yiou~T.P. \idxquad{28} +\indexspace +\item \v{Z}\'a\v{c}ek~J. \idxquad{30} +\item Zeitnitz~C. \idxquad{12} +\item Ziaeepour~H. \idxquad{26} +\item Zimmer~M. \idxquad{11} +\item Zimmermann~W. \idxquad{11} +\end{theindex} diff --git a/paper/llncs2e/llncsdoc.pdf b/paper/llncs2e/llncsdoc.pdf new file mode 100644 index 000000000..5b68e0f18 Binary files /dev/null and b/paper/llncs2e/llncsdoc.pdf differ diff --git a/paper/llncs2e/llncsdoc.sty b/paper/llncs2e/llncsdoc.sty new file mode 100644 index 000000000..5843cba8e --- /dev/null +++ b/paper/llncs2e/llncsdoc.sty @@ -0,0 +1,42 @@ +% This is LLNCSDOC.STY the modification of the +% LLNCS class file for the documentation of +% the class itself. +% +\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}% + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} +\def\AmSTeX{{\protect\AmS-\protect\TeX}} +% +\def\ps@myheadings{\let\@mkboth\@gobbletwo +\def\@oddhead{\hbox{}\hfil\small\rm\rightmark +\qquad\thepage}% +\def\@oddfoot{}\def\@evenhead{\small\rm\thepage\qquad +\leftmark\hfil}% +\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}} +\ps@myheadings +% +\setcounter{tocdepth}{2} +% +\renewcommand{\labelitemi}{--} +\newenvironment{alpherate}% +{\renewcommand{\labelenumi}{\alph{enumi})}\begin{enumerate}}% +{\end{enumerate}\renewcommand{\labelenumi}{enumi}} +% +\def\bibauthoryear{\begingroup +\def\thebibliography##1{\section*{References}% + \small\list{}{\settowidth\labelwidth{}\leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \usecounter{enumi}}% + \def\newblock{\hskip .11em plus .33em minus -.07em}% + \sloppy + \sfcode`\.=1000\relax}% + \def\@cite##1{##1}% + \def\@lbibitem[##1]##2{\item[]\if@filesw + {\def\protect####1{\string ####1\space}\immediate + \write\@auxout{\string\bibcite{##2}{##1}}}\fi\ignorespaces}% +\begin{thebibliography}{} +\bibitem[1982]{clar:eke3} Clarke, F., Ekeland, I.: Nonlinear +oscillations and boundary-value problems for Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) +\end{thebibliography} +\endgroup} diff --git a/paper/llncs2e/readme.txt b/paper/llncs2e/readme.txt new file mode 100644 index 000000000..baa968816 --- /dev/null +++ b/paper/llncs2e/readme.txt @@ -0,0 +1,34 @@ +Dear LLNCS user, + +The files in this directory belong to the LaTeX2e package for +Lecture Notes in Computer Science (LNCS) of Springer-Verlag. + +It consists of the following files: + + readme.txt this file + + history.txt the version history of the package + + llncs.cls the LaTeX2e document class + + llncs.dem the sample input file + + llncs.doc the documentation of the class (LaTeX source) + llncsdoc.pdf the documentation of the class (PDF version) + llncsdoc.sty the modification of the class for the documentation + llncs.ind an external (faked) author index file + subjidx.ind subject index demo from the Springer book package + llncs.dvi the resulting DVI file (remember to use binary transfer!) + + sprmindx.sty supplementary style file for MakeIndex + (usage: makeindex -s sprmindx.sty ) + + splncs.bst old BibTeX style for use with llncs.cls + + splncs_srt.bst ditto with alphabetic sorting + + splncs03.bst current LNCS BibTeX style with alphabetic sorting + + aliascnt.sty part of the Oberdiek bundle; allows more control over + the counters associated to any numbered item + remreset.sty by David Carlisle diff --git a/paper/llncs2e/remreset.sty b/paper/llncs2e/remreset.sty new file mode 100644 index 000000000..b53de5835 --- /dev/null +++ b/paper/llncs2e/remreset.sty @@ -0,0 +1,39 @@ + +% remreset package +%%%%%%%%%%%%%%%%%% + +% Copyright 1997 David carlisle +% This file may be distributed under the terms of the LPPL. +% See 00readme.txt for details. + +% 1997/09/28 David Carlisle + +% LaTeX includes a command \@addtoreset that is used to declare that +% a counter should be reset every time a second counter is incremented. + +% For example the book class has a line +% \@addtoreset{footnote}{chapter} +% So that the footnote counter is reset each chapter. + +% If you wish to bas a new class on book, but without this counter +% being reset, then standard LaTeX gives no simple mechanism to do +% this. + +% This package defines |\@removefromreset| which just undoes the effect +% of \@addtorest. So for example a class file may be defined by + +% \LoadClass{book} +% \@removefromreset{footnote}{chapter} + + +\def\@removefromreset#1#2{{% + \expandafter\let\csname c@#1\endcsname\@removefromreset + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\@removefromreset + \else + \noexpand\@elt{##1}% + \fi}% + \expandafter\xdef\csname cl@#2\endcsname{% + \csname cl@#2\endcsname}}} + + diff --git a/paper/llncs2e/splncs.bst b/paper/llncs2e/splncs.bst new file mode 100644 index 000000000..fe8a22af7 --- /dev/null +++ b/paper/llncs2e/splncs.bst @@ -0,0 +1,1098 @@ +% BibTeX bibliography style `splncs' + +% An attempt to match the bibliography style required for use with +% numbered references in Springer Verlag's "Lecture Notes in Computer +% Science" series. (See Springer's documentation for llncs.sty for +% more details of the suggested reference format.) Note that this +% file will not work for author-year style citations. + +% Use \documentclass{llncs} and \bibliographystyle{splncs}, and cite +% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. + +% Copyright (C) 1999 Jason Noble. +% Last updated: Friday 07 March 2006, 08:04:42 Frank Holzwarth, Springer +% +% Based on the BibTeX standard bibliography style `unsrt' + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence + after.block after.authors between.elements} + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.authors := + #5 'between.elements := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { " " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { + output.state after.authors = + { ": " * write$ + newline$ + "\newblock " write$ + } + { output.state between.elements = + { ", " * write$ } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {stupid.colon} +{ after.authors 'output.state := } + +FUNCTION {insert.comma} +{ output.state before.all = + 'skip$ + { between.elements 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "" swap$ * "" * } + if$ +} + +FUNCTION {bold} +{ duplicate$ empty$ + { pop$ "" } + { "\textbf{" swap$ * "}" * } + if$ +} + +FUNCTION {parens} +{ duplicate$ empty$ + { pop$ "" } + { "(" swap$ * ")" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.springer.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #1 > + { ", " * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { "" * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " \& " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.springer.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.springer.names + editor num.names$ #1 > + { ", eds." * } + { ", ed." * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "Volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + add.period$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edn." * } + { edition "t" change.case$ " edn." * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "" pages n.dashify tie.or.space.connect } + { "" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol} +{ volume bold +} + +FUNCTION {format.vol.num} +{ volume bold +number empty$ +{ } +{ number "(" swap$ * * ")" * } +if$ +} + +FUNCTION {pre.format.pages} +{ pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { " " * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { " " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In: " booktitle emphasize * } + { "In " format.editors * ": " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "" } + if$ + } + { "" } + if$ + } + { "" } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {and.the.note} +{ note output + note empty$ + 'skip$ + { add.period$ } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num output + format.date parens output + format.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + and.the.note + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + stupid.colon + format.btitle "title" output.check + new.sentence + crossref missing$ + { format.edition output + format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + } + { format.book.crossref output.nonnull + } + if$ + and.the.note + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + stupid.colon + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + stupid.colon + crossref missing$ + { chapter output + new.block + format.number.series output + new.sentence + "In:" output + format.btitle "title" output.check + new.sentence + format.edition output + format.bvolume output + publisher "publisher" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + } + { chapter output + new.block + format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages output + and.the.note + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence + format.bvolume output + format.number.series output + new.block + format.edition output + publisher "publisher" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + format.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + and.the.note + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence + format.bvolume output + format.number.series output + address empty$ + { organization publisher new.sentence.checkb + organization empty$ + 'skip$ + { insert.comma } + if$ + organization output + publisher empty$ + 'skip$ + { insert.comma } + if$ + publisher output + format.date parens output + } + { insert.comma + address output.nonnull + organization empty$ + 'skip$ + { insert.comma } + if$ + organization output + publisher empty$ + 'skip$ + { insert.comma } + if$ + publisher output + format.date parens output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages output + and.the.note + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + stupid.colon + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address empty$ + 'skip$ + { insert.comma } + if$ + address output + } + if$ + new.sentence + format.edition output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school empty$ + 'skip$ + { insert.comma } + if$ + school "school" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + howpublished new.block.checka + howpublished output + format.date parens output + and.the.note + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school empty$ + 'skip$ + { insert.comma } + if$ + school "school" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization empty$ + { "" } + { organization output + stupid.colon } + if$ + } + { format.editors output.nonnull + stupid.colon + } + if$ + format.btitle "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence + format.bvolume output + format.number.series output + address empty$ + { organization publisher new.sentence.checkb + organization empty$ + 'skip$ + { insert.comma } + if$ + organization output + publisher empty$ + 'skip$ + { insert.comma } + if$ + publisher output + format.date parens output + } + { insert.comma + address output.nonnull + organization empty$ + 'skip$ + { insert.comma } + if$ + organization output + publisher empty$ + 'skip$ + { insert.comma } + if$ + publisher output + format.date parens output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + and.the.note + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution empty$ + 'skip$ + { insert.comma } + if$ + institution "institution" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + note "note" output.check + format.date parens output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + + + diff --git a/paper/llncs2e/splncs03.bst b/paper/llncs2e/splncs03.bst new file mode 100644 index 000000000..327916917 --- /dev/null +++ b/paper/llncs2e/splncs03.bst @@ -0,0 +1,1519 @@ +%% BibTeX bibliography style `splncs03' +%% +%% BibTeX bibliography style for use with numbered references in +%% Springer Verlag's "Lecture Notes in Computer Science" series. +%% (See Springer's documentation for llncs.cls for +%% more details of the suggested reference format.) Note that this +%% file will not work for author-year style citations. +%% +%% Use \documentclass{llncs} and \bibliographystyle{splncs03}, and cite +%% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. +%% +%% This file comes to you courtesy of Maurizio "Titto" Patrignani of +%% Dipartimento di Informatica e Automazione Universita' Roma Tre +%% +%% ================================================================================================ +%% This was file `titto-lncs-02.bst' produced on Wed Apr 1, 2009 +%% Edited by hand by titto based on `titto-lncs-01.bst' (see below) +%% +%% CHANGES (with respect to titto-lncs-01.bst): +%% - Removed the call to \urlprefix (thus no "URL" string is added to the output) +%% ================================================================================================ +%% This was file `titto-lncs-01.bst' produced on Fri Aug 22, 2008 +%% Edited by hand by titto based on `titto.bst' (see below) +%% +%% CHANGES (with respect to titto.bst): +%% - Removed the "capitalize" command for editors string "(eds.)" and "(ed.)" +%% - Introduced the functions titto.bbl.pages and titto.bbl.page for journal pages (without "pp.") +%% - Added a new.sentence command to separate with a dot booktitle and series in the inproceedings +%% - Commented all new.block commands before urls and notes (to separate them with a comma) +%% - Introduced the functions titto.bbl.volume for handling journal volumes (without "vol." label) +%% - Used for editors the same name conventions used for authors (see function format.in.ed.booktitle) +%% - Removed a \newblock to avoid long spaces between title and "In: ..." +%% - Added function titto.space.prefix to add a space instead of "~" after the (removed) "vol." label +%% ================================================================================================ +%% This was file `titto.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `vonx,nm-rvvc,yr-par,jttl-rm,volp-com,jwdpg,jwdvol,numser,ser-vol,jnm-x,btit-rm,bt-rm,edparxc,bkedcap,au-col,in-col,fin-bare,pp,ed,abr,mth-bare,xedn,jabr,and-com,and-com-ed,xand,url,url-blk,em-x,nfss,') +%% ---------------------------------------- +%% *** Tentative .bst file for Springer LNCS *** +%% +%% Copyright 1994-2007 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is a numerical citation style, and as such is standard LaTeX. + % It requires no extra package to interface to the main text. + % The form of the \bibitem entries is + % \bibitem{key}... + % Usage of \cite is as follows: + % \cite{key} ==>> [#] + % \cite[chap. 2]{key} ==>> [#, chap. 2] + % where # is a number determined by the ordering in the reference list. + % The order in the reference list is alphabetical by authors. + %--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + edition + editor + eid + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + } + {} + { label } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ +% newline$ +% "\newblock " write$ % removed for titto-lncs-01 + " " write$ % to avoid long spaces between title and "In: ..." + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ duplicate$ empty$ + 'pop$ + 'write$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + + +FUNCTION {add.colon} +{ duplicate$ empty$ + 'skip$ + { ":" * add.blank } + if$ +} + +FUNCTION {date.block} +{ + new.block +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +STRINGS {z} +FUNCTION {remove.dots} +{ 'z := + "" + { z empty$ not } + { z #1 #1 substring$ + z #2 global.max$ substring$ 'z := + duplicate$ "." = 'pop$ + { * } + if$ + } + while$ +} +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ skip$ } +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} +FUNCTION {titto.space.prefix} % always introduce a space +{ duplicate$ text.length$ #3 < + { " " } + { " " } + if$ + swap$ +} + + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "edn." } + +FUNCTION {bbl.volume} +{ "vol." } + +FUNCTION {titto.bbl.volume} % for handling journals +{ "" } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp." } + +FUNCTION {bbl.page} +{ "p." } + +FUNCTION {titto.bbl.pages} % for journals +{ "" } + +FUNCTION {titto.bbl.page} % for journals +{ "" } + +FUNCTION {bbl.chapter} +{ "chap." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {format.url} +{ url empty$ + { "" } +% { "\urlprefix\url{" url * "}" * } + { "\url{" url * "}" * } % changed in titto-lncs-02.bst + if$ +} + +INTEGERS { nameptr namesleft numnames } + + +STRINGS { bibinfo} + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}{, jj}{, f{.}.}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + "," * + t "others" = + { + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{.}.~}{vv~}{ll}{ jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + "," * + t "others" = + { + + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.authors} +{ author "author" format.names +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + " " * + get.bbl.editor +% capitalize + "(" swap$ * ")" * + * + } + if$ +} +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ + "title" bibinfo.check +} +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in capitalize + ":" * + " " * } + +FUNCTION {format.date} +{ + month "month" bibinfo.check + duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + remove.dots + } + if$ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " (" swap$ * ")" * + } + if$ +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { emphasize ", " * swap$ * } + if$ + "volume and number" number either.or.check + } + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ", " * + swap$ + n.dashify + pages multi.page.check + 'titto.bbl.pages + 'titto.bbl.page + if$ + swap$ tie.or.space.prefix + "pages" bibinfo.check + * * + * + } + if$ + } + if$ +} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { + ", " * + } + if$ + swap$ * + } + if$ +} +FUNCTION {format.vol.num.pages} % this function is used only for journal entries +{ volume field.or.null + duplicate$ empty$ 'skip$ + { +% bbl.volume swap$ tie.or.space.prefix + titto.bbl.volume swap$ titto.space.prefix +% rationale for the change above: for journals you don't want "vol." label +% hence it does not make sense to attach the journal number to the label when +% it is short + "volume" bibinfo.check + * * + } + if$ + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "(" swap$ * ")" * + } + if$ * + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check +} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { +% editor "editor" format.names.ed duplicate$ empty$ 'pop$ % changed by titto + editor "editor" format.names duplicate$ empty$ 'pop$ + { + " " * + get.bbl.editor +% capitalize + "(" swap$ * ") " * + * swap$ + * } + if$ + word.in swap$ * + } + if$ +} +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + key duplicate$ empty$ + { pop$ + journal duplicate$ empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } + { "journal" bibinfo.check emphasize word.in swap$ * } + if$ + } + { word.in swap$ * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + editor num.names$ duplicate$ + #2 > + { pop$ + "editor" bibinfo.check + " " * bbl.etal + * + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + "editor" bibinfo.check + " " * bbl.etal + * + } + { + bbl.and space.word + * editor #2 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + * + } + if$ + } + if$ + } + if$ +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + capitalize + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { format.booktitle duplicate$ empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + } + { word.in swap$ * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } + if$ + } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { + journal + "journal" bibinfo.check + "journal" output.check + add.blank + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + add.colon + } + { format.authors output.nonnull + add.colon + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + new.sentence + format.number.series output + format.publisher.address output + } + { + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + add.colon + new.block + format.title "title" output.check + new.block + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + add.colon + } + { format.authors output.nonnull + add.colon + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + new.sentence + format.number.series output + format.publisher.address output + } + { + format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.chapter.pages output + new.sentence + format.number.series output + format.publisher.address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence % added by titto + format.bvolume output + format.pages output + new.sentence + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization "organization" bibinfo.check + duplicate$ empty$ 'pop$ + { output + address "address" bibinfo.check output + } + if$ + } + { format.authors output.nonnull } + if$ + add.colon + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { + address new.block.checka + address "address" bibinfo.check output + } + 'skip$ + if$ + } + { + organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + } + if$ + format.edition output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.btitle + "title" output.check + new.block + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + add.colon + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished "howpublished" bibinfo.check output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry + empty.misc.check +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.btitle + "title" output.check + new.block + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization "organization" bibinfo.check output + } + { format.editors output.nonnull } + if$ + add.colon + new.block + format.btitle "title" output.check + format.bvolume output + editor empty$ + { publisher empty$ + { format.number.series output } + { + new.sentence + format.number.series output + format.publisher.address output + } + if$ + } + { publisher empty$ + { + new.sentence + format.number.series output + format.organization.address output } + { + new.sentence + format.number.series output + organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + if$ + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title + "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + format.date output +% new.block + format.url output +% new.block + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } +READ +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +INTEGERS { len } +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll{ }}{ ff{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { t sortify * } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {presort} +SORT +STRINGS { longest.label } +INTEGERS { number.label longest.label.width } +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\providecommand{\urlprefix}{URL }" + write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `titto.bst'. + + diff --git a/paper/llncs2e/splncs_srt.bst b/paper/llncs2e/splncs_srt.bst new file mode 100644 index 000000000..deb6fea57 --- /dev/null +++ b/paper/llncs2e/splncs_srt.bst @@ -0,0 +1,1251 @@ +% BibTeX bibliography style `splncs_srt' + +% An attempt to match the bibliography style required for use with +% numbered references in Springer Verlag's "Lecture Notes in Computer +% Science" series. (See Springer's documentation for llncs.sty for +% more details of the suggested reference format.) Note that this +% file will not work for author-year style citations. + +% Use \documentclass{llncs} and \bibliographystyle{splncs_srt}, and cite +% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. + +% Copyright (C) 1999 Jason Noble. +% Last updated: Friday 07 March 2006, 08:04:42 Frank Holzwarth, Springer +% Last modification: added sorting feature from plain.bst +% done by Tobias Heindel, FMI Uni-Stuttgart, June 13th, 2006 +% +% Originally based on the BibTeX standard bibliography style `unsrt' +% + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence + after.block after.authors between.elements} + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.authors := + #5 'between.elements := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { " " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { + output.state after.authors = + { ": " * write$ + newline$ + "\newblock " write$ + } + { output.state between.elements = + { ", " * write$ } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {stupid.colon} +{ after.authors 'output.state := } + +FUNCTION {insert.comma} +{ output.state before.all = + 'skip$ + { between.elements 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "" swap$ * "" * } + if$ +} + +FUNCTION {bold} +{ duplicate$ empty$ + { pop$ "" } + { "\textbf{" swap$ * "}" * } + if$ +} + +FUNCTION {parens} +{ duplicate$ empty$ + { pop$ "" } + { "(" swap$ * ")" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.springer.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #1 > + { ", " * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { "" * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " \& " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.springer.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.springer.names + editor num.names$ #1 > + { ", eds." * } + { ", ed." * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "Volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + add.period$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edn." * } + { edition "t" change.case$ " edn." * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "" pages n.dashify tie.or.space.connect } + { "" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol} +{ volume bold +} + +FUNCTION {format.vol.num} +{ volume bold +number empty$ +{ } +{ number "(" swap$ * * ")" * } +if$ +} + +FUNCTION {pre.format.pages} +{ pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { " " * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { " " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In: " booktitle emphasize * } + { "In " format.editors * ": " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "" } + if$ + } + { "" } + if$ + } + { "" } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {and.the.note} +{ note output + note empty$ + 'skip$ + { add.period$ } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num output + format.date parens output + format.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + and.the.note + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + stupid.colon + format.btitle "title" output.check + new.sentence + crossref missing$ + { format.edition output + format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + } + { format.book.crossref output.nonnull + } + if$ + and.the.note + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + stupid.colon + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + stupid.colon + crossref missing$ + { chapter output + new.block + format.number.series output + new.sentence + "In:" output + format.btitle "title" output.check + new.sentence + format.edition output + format.bvolume output + publisher "publisher" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + } + { chapter output + new.block + format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages output + and.the.note + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence + format.bvolume output + format.number.series output + new.block + format.edition output + publisher "publisher" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + format.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + and.the.note + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence + format.bvolume output + format.number.series output + address empty$ + { organization publisher new.sentence.checkb + organization empty$ + 'skip$ + { insert.comma } + if$ + organization output + publisher empty$ + 'skip$ + { insert.comma } + if$ + publisher output + format.date parens output + } + { insert.comma + address output.nonnull + organization empty$ + 'skip$ + { insert.comma } + if$ + organization output + publisher empty$ + 'skip$ + { insert.comma } + if$ + publisher output + format.date parens output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages output + and.the.note + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + stupid.colon + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address empty$ + 'skip$ + { insert.comma } + if$ + address output + } + if$ + new.sentence + format.edition output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school empty$ + 'skip$ + { insert.comma } + if$ + school "school" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + howpublished new.block.checka + howpublished output + format.date parens output + and.the.note + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school empty$ + 'skip$ + { insert.comma } + if$ + school "school" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization empty$ + { "" } + { organization output + stupid.colon } + if$ + } + { format.editors output.nonnull + stupid.colon + } + if$ + format.btitle "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence + format.bvolume output + format.number.series output + address empty$ + { organization publisher new.sentence.checkb + organization empty$ + 'skip$ + { insert.comma } + if$ + organization output + publisher empty$ + 'skip$ + { insert.comma } + if$ + publisher output + format.date parens output + } + { insert.comma + address output.nonnull + organization empty$ + 'skip$ + { insert.comma } + if$ + organization output + publisher empty$ + 'skip$ + { insert.comma } + if$ + publisher output + format.date parens output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + and.the.note + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution empty$ + 'skip$ + { insert.comma } + if$ + institution "institution" output.check + address empty$ + 'skip$ + { insert.comma } + if$ + address output + format.date parens output + and.the.note + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + stupid.colon + format.title "title" output.check + new.block + note "note" output.check + format.date parens output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +%% Begin of addition of sorting (taken from CTAN plain.bst) +%% Tobias Heindel June 13th, 2006 + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +%% End of addition for sorting + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + + + diff --git a/paper/llncs2e/sprmindx.sty b/paper/llncs2e/sprmindx.sty new file mode 100644 index 000000000..8f17772e1 --- /dev/null +++ b/paper/llncs2e/sprmindx.sty @@ -0,0 +1,4 @@ +delim_0 "\\idxquad " +delim_1 "\\idxquad " +delim_2 "\\idxquad " +delim_n ",\\," diff --git a/paper/llncs2e/subjidx.ind b/paper/llncs2e/subjidx.ind new file mode 100644 index 000000000..cd678e8ea --- /dev/null +++ b/paper/llncs2e/subjidx.ind @@ -0,0 +1,70 @@ +% clmomu01.ind +%----------------------------------------------------------------------- +% CLMoMu01 1.0: LaTeX style files for books +% Sample index file for User's guide +% (c) Springer-Verlag HD +%----------------------------------------------------------------------- +\begin{theindex} +\item Absorption\idxquad 327 +\item Absorption of radiation \idxquad 289--292,\, 299,\,300 +\item Actinides \idxquad 244 +\item Aharonov-Bohm effect\idxquad 142--146 +\item Angular momentum\idxquad 101--112 +\subitem algebraic treatment\idxquad 391--396 +\item Angular momentum addition\idxquad 185--193 +\item Angular momentum commutation relations\idxquad 101 +\item Angular momentum quantization\idxquad 9--10,\,104--106 +\item Angular momentum states\idxquad 107,\,321,\,391--396 +\item Antiquark\idxquad 83 +\item $\alpha$-rays\idxquad 101--103 +\item Atomic theory\idxquad 8--10,\,219--249,\,327 +\item Average value\newline ({\it see also\/} Expectation value) +15--16,\,25,\,34,\,37,\,357 +\indexspace +\item Baker-Hausdorff formula\idxquad 23 +\item Balmer formula\idxquad 8 +\item Balmer series\idxquad 125 +\item Baryon\idxquad 220,\,224 +\item Basis\idxquad 98 +\item Basis system\idxquad 164,\,376 +\item Bell inequality\idxquad 379--381,\,382 +\item Bessel functions\idxquad 201,\,313,\,337 +\subitem spherical\idxquad 304--306,\, 309,\, 313--314,\,322 +\item Bound state\idxquad 73--74,\,78--79,\,116--118,\,202,\, 267,\, +273,\,306,\,348,\,351 +\item Boundary conditions\idxquad 59,\, 70 +\item Bra\idxquad 159 +\item Breit-Wigner formula\idxquad 80,\,84,\,332 +\item Brillouin-Wigner perturbation theory\idxquad 203 +\indexspace +\item Cathode rays\idxquad 8 +\item Causality\idxquad 357--359 +\item Center-of-mass frame\idxquad 232,\,274,\,338 +\item Central potential\idxquad 113--135,\,303--314 +\item Centrifugal potential\idxquad 115--116,\,323 +\item Characteristic function\idxquad 33 +\item Clebsch-Gordan coefficients\idxquad 191--193 +\item Cold emission\idxquad 88 +\item Combination principle, Ritz's\idxquad 124 +\item Commutation relations\idxquad 27,\,44,\,353,\,391 +\item Commutator\idxquad 21--22,\,27,\,44,\,344 +\item Compatibility of measurements\idxquad 99 +\item Complete orthonormal set\idxquad 31,\,40,\,160,\,360 +\item Complete orthonormal system, {\it see}\newline +Complete orthonormal set +\item Complete set of observables, {\it see\/} Complete +set of operators +\indexspace +\item Eigenfunction\idxquad 34,\,46,\,344--346 +\subitem radial\idxquad 321 +\subsubitem calculation\idxquad 322--324 +\item EPR argument\idxquad 377--378 +\item Exchange term\idxquad 228,\,231,\,237,\,241,\,268,\,272 +\indexspace +\item $f$-sum rule\idxquad 302 +\item Fermi energy\idxquad 223 +\indexspace +\item H$^+_2$ molecule\idxquad 26 +\item Half-life\idxquad 65 +\item Holzwarth energies\idxquad 68 +\end{theindex} diff --git a/paper/paper.tex b/paper/paper.tex new file mode 100644 index 000000000..29a2e2c45 --- /dev/null +++ b/paper/paper.tex @@ -0,0 +1,556 @@ +\documentclass{./llncs2e/llncs} + +\usepackage{silence} +\WarningFilter{latex}{Text page} +\WarningFilter{caption}{Unsupported} +\WarningFilter{amsmath}{Unable} + + +\usepackage{todonotes} +\newcommand{\jk}[1]{\todo[inline]{JK: #1}} +%\usepackage{silence} +%\WarningFilter{latex}{Marginpar} +%\WarningFilter{latexfont}{Font shape} +%\WarningFilter{latexfont}{Some font} +%\usepackage{changes} +\usepackage{lmodern} +\usepackage{booktabs} + +%\usepackage{caption} +\usepackage{subcaption} +\usepackage{amsmath} +%\usepackage[pass,showframe]{geometry} +\usepackage{array} +\usepackage[hidelinks]{hyperref} +\usepackage{cleveref} +\usepackage{graphicx} +%\usepackage{luacode} +%\usepackage{subfig} +\usepackage{xcolor} +\usepackage{float} +\graphicspath{ + {./fig/} + %{/home/joobog/git/bull-io/mpio/ddnime-benchmark/ime_eval/} + %{/home/joobog/git/bull-io/mpio/ddnime-benchmark/ime_eval/info/} +} +% +%\usepackage{makeidx} % allows for indexgeneration +% + +\newcolumntype{P}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1\textwidth}} +\begin{document} +% +%\frontmatter % for the preliminaries +% +\pagestyle{headings} % switches on printing of running heads +%\addtocmark{Hamiltonian Mechanics} % additional mark in the TOC +% +%\tableofcontents +% +%\mainmatter % start of the contributions +% +%\title{An MPI-IO In-Memory Driver for Non-Volatile Pooled Memory of the Kove XPD} % -- TODO page limit 18 pages +%\title{Burst Buffer for climate applications} +\title{Benefit of DDN's IME-FUSE for I/O intensive HPC applications.} +% +%\titlerunning{Hamiltonian Mechanics} % abbreviated title (for running head) +% also used for the TOC unless +% \toctitle is used +% +%\author{Double blind} +\author{Eugen Betke\inst{1} \and Julian Kunkel\inst{2}} +% +%\authorrunning{Ivar Ekeland et al.} % abbreviated author list (for running head) +%\institute{Double blind} + +%\institute{Deutsches Klimarechenzentrum, Hamburg HH 20146, Germany,\\ +%\email{betke@dkrz.de},\\ Home page: +%\texttt{http://dkrz.de} +%\and +%University of Reading, Whiteknights, PO Box 217, Reading, Berkshire, RG6 6AH, United Kingdom,\\ +%\email{j.m.kunkel@reading.ac.uk},\\ Home page: +%\texttt{https://www.reading.ac.uk}} + +\institute{Deutsches Klimarechenzentrum, Hamburg, Germany,\\ +\email{betke@dkrz.de} +\and +University of Reading, Reading, United Kingdom,\\ +\email{j.m.kunkel@reading.ac.uk}} + +\maketitle % typeset the title of the contribution + +\begin{abstract} +Many scientific applications are limited by I/O performance offered by parallel file systems on conventional storage systems. +Flash-based burst buffers provide significant better performance than HDD backed storage, but at the expense of capacity. +Burst buffers are considered as the next step towards achieving wire-speed of interconnect and providing more predictable low latency I/O, which are the holy grail of storage. + +A critical evaluation of storage technology is mandatory as there is no long-term experience with performance behavior for particular applications scenarios. +The evaluation enables data centers choosing the right products and system architects the integration in HPC architectures. + +This paper investigates the native performance of DDN-IME, a flash-based burst buffer solution. +Then, it takes a closer look at the IME-FUSE file systems, which uses IMEs as burst buffer and a Lustre file system as back-end. +%\jk{Aber nicht nur IME-FUSE, oder? Hinten sind ja andere auch untersucht.} +Finally, by utilizing a NetCDF benchmark, it estimates the performance benefit for climate applications. +\end{abstract} + +\keywords{Lustre, FUSE, evaluation, flash-based storage} + + + +\section{Introduction} +%Since we understand that, the architecture of the next generation HPC shall consider that fact. +The dilemma of conventional high-performance storage systems based on HDDs is that they must maximize the throughput to reduce application run times and at the same time they shall minimize the provided bandwidth to reduce costs. +The first requirement is often prioritized to the detriment of the second one, which typically ends up in the oversizing and in a low average usage of the bandwidth procured. +The prioritization is motivated by the requirement to process large performance peaks particular due to checkpoint/restart workloads, that often occur in large-scale applications. +However, since these systems are optimized for sequential I/O, data-intense workloads that are not following this pattern are unable to saturate the network -- reducing the effective utilization. + +% Hardware solutions +Traditional parallel file systems can be deployed on flash-based storage instead of HDDs, increasing performance for random workloads. +A nice work in this direction was done in \cite{heben2014lfsperf}. +Typically, data is accessed via POSIX interfaces but can be accessed using MPI-IO~\cite{Thakur:1999:IMP:301816.301826}. +MPI-IO is a widely accepted middleware layer for parallel I/O that relaxes the POSIX semantics and is designed for parallel I/O. +In an alternative storage architecture, a burst buffer~\cite{Liu12onthe,romanus2015challenges} is placed between compute nodes and the storage. +Acting as an intermediate storage tier, it's goal is to catch the I/O peaks from the compute nodes. +Therefore, it provides a low latency and high bandwidth to the compute nodes, but also utilizes the back-end storage by streaming data constantly at a lower bandwidth. + +%It allows the large-scale applications to share files efficiently, facilitating the programming efforts and is a part of many libraries and used by a wide range of applications. +In-memory systems, like the Kove\textsuperscript{\textregistered} XPD\textsuperscript{\textregistered}~\cite{kove:xpd:l2}, provide byte-addressable storage with better latency, endurance and availability as flash chips. +Flash-based systems, like DDN IME \cite{ddnime2015}, are also byte-addressable, but have different characteristics than an in-memory storage, for example, flash offers a better costs per gigabyte ratio. + +%The address space of burst-buffer can be used to deploy a parallel file system, but performance would be limited by the POSIX semantics. +%For large data this solution may be not suitable due space limitation. +%In contrast, the relaxed MPI-IO semantics enables a lock-free access. + +Accessing a fast storage over a POSIX compliant file system or MPI-IO interface is an interesting option for many users, because neither changes in source code, nor software recompilation is required as long as it doesn't degrade the performance too much. +Closed source and pre-compiled applications could also benefit from that. +For that purpose, DDN developed a fuse module (IME-FUSE) which uses IME as a burst buffer and stores data on a parallel file system. +In this evaluation we used Lustre as back-end. +%\jk{Lustre is now what?} + +Our \textbf{contributions} are: 1) we investigate peak performance of IME-native and IME-FUSE, and compare it to Lustre, +2) we estimate the performance behaviour for HPC applications, that access data using NetCDF library. + +This paper is structured as follows: +\Cref{sec:relatedWork} discusses related work, then Section 3 describes the test environment. +Section 4 and 5 show the test setup and performance results. +Finally, the paper is summarized in Section 6. + +\section{Related Work} +\label{sec:relatedWork} +% Burst buffer hardware +Relevant state-of-the-art can be grouped into performance optimization, burst buffers to speedup I/O and in-memory storage solutions. + +Optimization and tuning of file systems and I/O libraries is traditionally an important but daunting task as many configuration knobs can be considered in parallel file system servers, clients and the I/O middleware. +Without tuning, typical workloads stay behind the peak-performance by orders of magnitude. +With considerable tuning effort a well fitting problem can yield good results: \cite{HDF5Intro} reports 50\% peak performance with a single 291~TB file. +In \cite{howison2012tuning} MPI-IO and HDF5 were optimized and adapted to each other, improving write throughput by 1.4x to 33x. + +Many existing workloads can take benefit of a burst buffer as a fast write-behind cache that transparently migrates data from the fast storage to traditional parallel file system. +Burst buffers typically rely on flash or NVRAM to support random I/O workloads. +For flash based SSDs, many vendors offer high-performance storage solutions, for example, DDN Infinite Memory Engine (IME)~\cite{DDNIME}, IBM FlashSystem~\cite{IBMFlash} and Cray's DataWarp accelerator~\cite{CrayDataWarp}. +Using comprehensive strategies to utilize flash chips concurrently, these solutions are powerful and robust to guarantee availability and durability of data for many years. + +The integration of Cray DataWarp burst buffer into the NERSC HPC architecture \cite{pdswDataWarp} increased the I/O performance of Chumbo-Crunch simulator by 2.84x to 5.73x, compared to Lustre. +However, for the sake of efficient burst buffer usage, the serial simulator workflow had to be split into single stages (i.e., simulation, visualization, movie encoding), which then were executed in parallel. +The research group at JSC uses DDN IME burst buffer \cite{Schenck2016} and GPFS to identify requirements for the next HPC generation. +The main purpose is to accelerate the I/O performance of the NEST (``NEural Simulation Tool``). +The preliminary IOR experiments show, that I/O performance can be increased upto 20x. +BurstFS \cite{Wang:2016:EBF:3014904.3014997} uses local NVRAM of compute nodes, instead of dedicated remote machines. +An elaborated communication scheme interconnects the distributed NVRAM and provides a contiguous storage space. +This storage is allocated at beginning and exists for the lifetime of the job. +In the experiments, BurstFS outperforms OrangeFS and PLFS by several times. + +%In \cite{sato2014user}, a user-level InfiniBand-based file system is designed as intermediate layer between compute nodes and parallel file system. +%With SSDs and FDR Infiniband, they achieve on one server a throughput of 2~GB/s and 3~GB/s for write and read, respectively. + +The usage of DRAM for storing intermediate data is not new and RAM drives have been used in MSDOS and Linux (with tmpfs) for decades. +However, offered RAM storage was used as temporary local storage and not durable and usually not accessible from remote nodes. +Exporting tmpfs storage via parallel file systems has been used mainly for performance evaluation but without durability guarantees. +Wickberg and Carothers introduced the RAMDISK Storage Accelerator~\cite{wickberg2012ramdisk} for HPC applications that flushes data to a back-end. +It consists of a set of dedicated nodes that offer in-memory scratch space. +Jobs can use the storage to pre-fetch input data prior job execution or as write-behind cache to speedup I/O. +A prototype with a PVFS-based RAMDISK improved performance of 2048 processes compared to GPFS (100~MB/s vs. 36~MB/s for writes). +Burst-mem~\cite{wang2014burstmem} provides a burst buffer with write-behind capabilities by extending Memcached~\cite{jose2011memcached}. +Experiments show that the ingress performance grows up to 100~GB/s with 128 BurstMem servers. +%An extension of the work discusses resilience on server failures with minor performance reductions~\cite{wang2015development}. +In the field of big data, in-memory data management and processing has become popular with Spark~\cite{zaharia2012resilient}. +Now there are many software packages providing storage management and compute engines~\cite{zhang2015memory}. +%By using such tools, various application workloads have been accelerated significantly. + +The Kove XPD~\cite{kove:xpd:l2} is a robust scale-out pooled memory solution that allows aggregating multiple Infiniband links and devices into one big virtual address space that can be dynamically partitioned. +Internally, the Kove provides persistence by periodically flushing memory with a SATA RAID. +Due to the performance differences, the process comes with a delay, but the solution is connected to a UPS to ensure that data becomes durable in case of a power outage. +While providing many interfaces, the XPD does not offer a shared storage that can be utilized from multiple nodes concurrently. + + + +\section{Test environment} +%\subsection{DDN cluster} +DDN provided access to their test cluster in D\"usseldorf on which 10 nodes could be used for testing. +Each node is equipped with two Sandy Bridge processors (8 cores, E5-2650v2 @2.60GHz) and 64~GB RAM. +They are interconnected with a Mellanox Connect-X-4 card providing 100 Gb/sec (4x EDR). +As storage, a DDN ES14K (Exascale 3.1) with two metadata servers and Lustre 2.7.19.12 is provided; additionally, an IME system consisting of 4 servers is provided. +The flash native data cache of IME acts as a burst buffer and is drained to the Lustre system, the performance reported with IOR is 85~GB/s in write mode. +The DDN IME provides byte-addressable flash-based storage space with high performance characteristics. +It can be addressed directly (IME-native) in a fast and efficient way, but DDN also provides a number of convenient solutions, that require less integration effort. +(1) The applications can be re-linked to the MPI-IO implementation with IME support, which was developed by DDN. +(2) Then, DDN provides a fuse module (IME-FUSE) with IME support, which are convenient ways to access a shared storage. +Both file systems are POSIX compliant and can be used by the applications without any source code modification, recompilation, or re-linking. +%\jk{Was ist patched Lustre.} +In the conducted tests, IME is used via its FUSE mount and backed by the DDN Lustre. +We assume during the write experiment, data is kept inside the burst buffer and not written back, albeit we cannot ensure this. +\begin{figure}[t] +\centering +\includegraphics[width=.7\linewidth]{system3} +\caption{DDN test cluster} +\label{fig:testsytem} +\end{figure} +The DDN cluster is a experimental system with a lightweight software setup. +Especially, the exclusive access to the IME was not guaranteed, so that some results could be affected by other users. +Therefore, we don't draw conclusions from outliers, since we don't know the origin of them. + +\subsection{Benchmarks} + +As our primary benchmark, IOR~\cite{loewe2012ior} is used varying access granularity, processes-per-node, nodes and access pattern (random and sequential). +The official version of IOR allows us to measure the real performance without considering open/close times (see \Cref{eq:ior_official}). +To synchronize the measurements and capture time for open, close and I/O separately, inter-phase barriers are turned on (IOR option -g). +The DDN version (IME-IOR) supports IME-native interface, but doesn't allow measuring real I/O performance. +Therefore, the performance values include open/close times (see \Cref{eq:ior_ddn}). + +\begin{equation}\label{eq:ior_official} +\text{perf}_\text{Lustre, IME-FUSE} = \frac{\text{filesize}}{t_{\text{io}}} +\end{equation} +\begin{equation}\label{eq:ior_ddn} +\text{perf}_\text{IME-native} = \frac{\text{filesize}}{t_{\text{total}}} = \frac{\text{filesize}}{t_{\text{open}} + t_{\text{io}} + t_{\text{close}}} +\end{equation} + +Since the IOR benchmarks does not support NetCDF, and HDF5 is only supported with limited configuration of the pattern, +additionally, the NetCDF-Bench has been used\footnote{\url{https://github.com/joobog/netcdf-bench}}. +This benchmark uses the parallel NetCDF interface to read/write patterns on a 4D dataset into a NetCDF4/HDF5 file. +It decomposes a domain geometry of ($t$,$x$,$y$,$z$), e.g., ($100$,$16$,$64$,$4$) across the processes of an MPI parallel program. +The processes partition the geometry in x and y direction and one time step is accessed per iteration of each parallel process. +Various options to control the optimizations and data mappings from NetCDF are exported by the benchmark (chunking vs. fixed layout, unbound dimensions, chunk size, pre-filling). + +Finally, to measure performance of individual operations to investigate variability, the sequential benchmark \texttt{io-modelling} is used\footnote{\url{https://github.com/JulianKunkel/io-modelling}}. +It uses a high-precision timer and supports various access patterns on top of the POSIX interface. + + +\section{Experiment Configuration} +%\subsection{Software} +On the DDN cluster, we use NetCDF-Bench, IOR, and IME-IOR to measure the IME's throughput, and use \texttt{io-modelling} for testing variability. +Each test configuration is repeated 10 times. +All experiments are conducted with block sizes 16, 100, 1024, and 10240~KiB. + +To find the performance limits of the test system we use the IOR benchmarks. +For that purpose, we conduct a series of experiments with various parameters, where we measure the performance for \{read, write\} $\times$ \{random, sequential\} $\times$ \{POSIX, MPIIO\} $\times$ \{Lustre, IME-FUSE, IME-native\} $\times$ \{collective, independent\}. +The stripe count on Lustre is twice as large as the number of nodes. + +The purpose of NetCDF-Bench is to investigate the I/O behaviour of typical scientific application, that access large variable through NetCDF4. +In the experiment, we varied the following parameters: \{Lustre, IME-FUSE\} $\times$ \{read, write\} $\times$ \{chunked, contiguous\} $\times$ \{collective, independent\}. + +With \texttt{io-modelling} benchmark we looked at the variability of individual I/O accesses \{Lustre, IME-FUSE\} $\times$ \{read, write\} $\times$ \{random, sequential\}. + +\subsection{Open/close times} +The time of open/close reduces the reported performance of IME. +They are dropped whenever possible for two reason. +Firstly, in our experiments the test file size is variable ($\text{filesize} = 100 \cdot \text{blocksize} \cdot \text{NN} \cdot \text{PPN}$), it affects small experiments more than the larger ones. +Additionally, it should be noted, that for production runs, larger files and capacities are assumed, reducing this overhead. +Unless otherwise stated, the performance reported in this paper was measured without open/close times. + + +The goal of our evaluation is to systematically investigate the scaling behavior of the DDN IME's, IME-FUSE and Lustre. +In the following experiments we use 1-10 client nodes (NN) and 1-8 processes per node (PPN) to push hardware to the limits. +On each compute node only one CPU is used, that is connected directly to the Infiniband adapter, to avoid the QPI overhead. +To provide reliable results, each experiment was repeated 10 times. + +%\jk{Wie oft wurden die Experimente wiederholt steht nirgendwo?} + +\subsection{Performance} +%\subsubsection{Peak performance} +\Cref{tab:bestperf_nn10} shows the best and the average performance values that were observed with IME-IOR during the test runs on a single node and on 10 nodes for random and sequential I/O. +Based on average performance for random I/O with NN=1 and PPN=8, 10 client nodes can achieve a throughput of 61~GB/s and of 80~GB/s for write and read, respectively. +As \Cref{tab:bestperf_nn10} shows, the measured write performance is similar to expected values, which indicates that the compute nodes are the bottlenecks. +But the measured read performance is significantly lower than expected. +This indicates, that the bottleneck here are the IMEs. +The same considerations apply to sequential performance. +\begin{figure}[b!] + \centering + \includegraphics[width=0.8\textwidth]{performance_overview_rnd_ime.png} + \caption{Random access performance depending on blocksize and PPN} + \label{fig:read_write_ime} +\end{figure} + +\section{Evaluation} +\begin{table}[b!] + \centering + \begin{tabular}{r|r|r|r|r|r|l|r} + & & \multicolumn{2}{c|}{Best} & \multicolumn{2}{c|}{Mean} & & \\ + NN & PPN & \multicolumn{2}{c|}{Performance} & \multicolumn{2}{c|}{Performance} & I/O type & File size \\ + & & \multicolumn{2}{c|}{in [MiB/s]} & \multicolumn{2}{c|}{in [MiB/s]} & & in [MiB] \\ + & & read & write & read & write & & \\ + \hline +1 &1 &2,560 &1,240 &2,400 &1,180 & rnd & 1000 \\ +1 &1 &2,290 &1,230 &2,000 &870 & seq & 1000 \\ + \hline +1 &8 &8,500 &6,390 &8,100 &6,120 & rnd & 8000 \\ +1 &8 &8,700 &6,380 &7,100 &4,530 & seq & 8000 \\ + \hline +10 &1 &22,300 &10,700 &21,200 &10,000 & rnd & 10000 \\ +10 &1 &23,200 &10,800 &22,200 &8,430 & seq & 10000 \\ + \hline +10 &8 &67,500 &60,200 &65,300 &58,400 & rnd & 80000 \\ +10 &8 &67,500 &62,900 &61,700 &54,300 & seq & 80000 \\ + \end{tabular} + \caption{The best and mean performance measured with IME-IOR (blocksize: 10MiB) (NN: number of nodes; PPN: processes per node).} + \label{tab:bestperf_nn10} +\end{table} + +%\subsubsection{IME} +\textbf{IME-native (\Cref{fig:read_write_ime,fig:overview_ime}):} +Characteristic for IME-native is that for each block size, there is a linear dependency between read and write accesses. +The performance behavior for each block size can be approximated by a linear function and that small block sizes tend to have better write behaviour. + +The complete set of performance results for random I/O is shown in \Cref{fig:overview_ime}. +Firstly, it confirms the linear scalability. +Secondly, there is also no regression of the curves, probably because the experiment setup couldn't push the IMEs to the limits. +Further observations are: +1) writing small blocks is more efficient than reading small blocks; reading large blocks is more efficient that writing large blocks, +%(2) the best configuration is not able to achieve the wire speed of the interconnect, +%(2) for large block sizes, a high percentage of peak is achieved quickly, +2) performance increases with increasing access granularity. +3) with 1 or 4 PPN the available network bandwidth is not utilized. +With PPN=8, we are close to the available network bandwidth for 1 and 10 MiB accesses. +Hence, the I/O path involves relevant latencies. + +%\def\hperf{0.45\textheight} +\def\hperf{0.45\textheight} + +%\jk{Im Bild braucht es als TEXT PPN, versteht man sonst nicht} + +\begin{figure}[t] + \centering + \includegraphics[height=\hperf]{performance_ior_ime_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:6x8.png} + \caption{IME-native random I/O performance (lines go through max. values)} + \label{fig:overview_ime} +\end{figure} + + +%+ sqlite3 results_random.db 'select nn, ppn, t*x*y*z*4/1024/1024, max(read)/1024 from p where app="ior" and iface="posix" and fs="lustre" and nn!=1 ' +%10 8 100.0 17.40234375 +%+ sqlite3 results_random.db 'select nn, ppn, t*x*y*z*4/1024/1024, max(write)/1024 from p where app="ior" and iface="posix" and fs="lustre" and nn!=1 ' +%4 6 1000.0 11.865234375 +%+ sqlite3 results_random.db 'select nn, ppn, t*x*y*z*4/1024/1024, max(read)/1024 from p where app="ior" and iface="mpio" and fs="lustre" and nn!=1 ' +%10 8 1000.0 16.853515625 +%+ sqlite3 results_random.db 'select nn, ppn, t*x*y*z*4/1024/1024, max(write)/1024 from p where app="ior" and iface="mpio" and fs="lustre" and nn!=1 ' +%10 8 100.0 3.763671875 + + + +%\subsubsection{Lustre} +\textbf{Lustre (\Cref{fig:overview_lustre}):} +Firstly, a single node can profit from caching, when reading data. +In this case observable performance can rise up to 37~GiB/s (not shown in the figure). +The caching effects disappear for $\text{NN}>1$, hence we ignore them in further discussion. +\begin{figure}[p!] + \centering + \begin{subfigure}{\textwidth} + \subcaption{Lustre} + \includegraphics[height=\hperf]{performance_ior_lustre_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:12x8.png} + \label{fig:overview_lustre} + \end{subfigure} + + \medskip + + \begin{subfigure}{\textwidth} + \subcaption{IME-FUSE} + \includegraphics[height=\hperf]{performance_ior_fuse_ind_CHUNK:notset_FILL:notset_LIM:notset_legend:yes_size:12x8.png} + \label{fig:overview_fuse} + \end{subfigure} + \caption{Random I/O performance (lines go through max. values)} +\end{figure} +Secondly, the read performance don't exceed 17.4~GiB/s, and is achieved with NN=10, PPN=8, BS=100~KiB. +This is a contra-intuitive, because usually large block size show better performance. +The best write performance is 11.8~GiB/s, and is achieved with NN=4, PPN=6, BS=1000~KiB. +This measurement and the incrementally flattening curve indicate a poor scalability of Lustre. +Generally speaking, Lustre has a lot of internal overhead, especially to make it POSIX compliant, e.g. distributed lock management. +Thirdly, a particular striking point is the result for MPI-IO write performance. +It is significantly lower than for other configurations. +For this behaviour we have no explanation at the moment. +It is also a confusing result, because it is in contradiction to our later experiment with NetCDF-Bench (\Cref{fig:netcdf_perf}). +NetCDF4 uses MPI-IO as back-end, but achieves better results. +%Although, a comparison is possible to a limited extend only, the benchmarks use different access pattern. + +%\subsubsection{IME-FUSE} +\textbf{IME-FUSE (\Cref{fig:overview_fuse}):} +The file system shows a linear scalability, similar to the IME-native, but provides less I/O performance, especially for reading. +This is probably caused by the FUSE overhead, which includes moving I/O requests from user space to kernel space, and then from kernel space to IME-FUSE. + + +%\subsection{Opening/Closing of Files} +%\label{sec:open-close} + +%\begin{figure}[ht] +% \begin{subfigure}{.49\textwidth} +% \centering +% \includegraphics[width=\textwidth]{performance_ior_lustre_mpio_writeopen} +% \subcaption{Lustre} +% \label{fig:open_lustre} +% \end{subfigure} +% \begin{subfigure}{.49\textwidth} +% \centering +% \includegraphics[width=\textwidth]{performance_ior_fuse_mpio_writeopen} +% \subcaption{IME-FUSE} +% \label{fig:open_fuse} +% \end{subfigure} +% \caption{Open times} +% \label{fig:open} +%\end{figure} + +%As already mentioned, IME-IOR doesn't provide open/close times. +%Therefore, we skip this investigation and take a look at IME-FUSE and Lustre (\Cref{fig:open}). +%Opening files for writing is one of the most costly metadata operations. +%The small number of nodes doesn't allow to create a reliable model to describe the open/close behaviour. + +%The opening times on FUSE are significantly higher than on Lustre. +%The reason is that a metadata request can not be sent directly to the metadata server, but has to go through the whole FUSE stack. +%The time need on FUSE can be higher than 4 seconds whereby on Lustre it is less than 0.20 seconds. +%Due the limited size of the test cluster it is not possible to proof that, but we assume that on larger runs the open times will converge to the same value. +%Because FUSE overhead is constant and metadata server of the file system will be the most significant bottleneck. + + +\subsection{Application Kernel Using HDF5} +In this experiment, the HDF5 VOL development branch (date 2016-05-09), NetCDF~4.4.1 and NetCDF-bench is used. +%Several values for the 4D data geometry (($100$:$16$:$64$:$4$) $\approx$ 3.1MiB, ($100$:$16$:$64$:$25$) $\approx$ 19.5iB, ($100$:$16$:$64$:$256$) $\approx$ 200MiB, ($100$:$16$:$64$:$2560$) $\approx$ 2000MiB) of raw integer data have been explored. +Several values for the 4D data geometry of raw integer data have been explored. +For each block size we did 100 measurements. +The configuration parameters are summarized in \Cref{tab:netcdf_conf}. +\begin{table} + \centering + \begin{tabular}{l|r|r} + Parameter (-d) & Data size & Block size \\ + ($t$:$x$:$y$:$z$) & [in GiB] & [in KiB] \\ + \hline + ($100$:$16$:$64$:$4$) & 0.5 & 16 \\ + ($100$:$16$:$64$:$25$) & 3.1 & 100 \\ + ($100$:$16$:$64$:$256$) & 7.8 & 1024 \\ + ($100$:$16$:$64$:$2560$) & 78.1 & 10240 \\ + \end{tabular} + \caption{NetCDF-Bench configuration used in during the benchmark.} + \label{tab:netcdf_conf} +\end{table} + + +In the experiments, we use 10 client nodes and 8 processes per node to access a shared file. +All experiments were conducted with fixed dimension sizes only, since the unlimited/variable dimensions are not supported in combination with independent I/O in NetCDF4. +\Cref{fig:netcdf_perf} shows the results. +Generally, as expected, independent chunked I/O was a good configuration. + +%\subsubsection{Performance} +%+ sqlite3 results_benchtool.db 'select nn, ppn, type, t*x*y*z*4/1024/1024, max(read)/1024 from p where app="benchtool" and type="coll" and fs="lustre" and unlimited="notset" and nn=10 and ppn=8 ' +%10 8 coll 1000.0 23.4844971199307 +%+ sqlite3 results_benchtool.db 'select nn, ppn, type, t*x*y*z*4/1024/1024, max(write)/1024 from p where app="benchtool" and type="coll" and fs="lustre" and unlimited="notset" and nn=10 and ppn=8 ' +%10 8 coll 1000.0 14.0872631923396 +%+ sqlite3 results_benchtool.db 'select nn, ppn, type, t*x*y*z*4/1024/1024, max(read)/1024 from p where app="benchtool" and type="ind" and fs="lustre" and unlimited="notset" and nn=10 and ppn=8 ' +%10 8 ind 1000.0 40.7447031422526 +%+ sqlite3 results_benchtool.db 'select nn, ppn, type, t*x*y*z*4/1024/1024, max(write)/1024 from p where app="benchtool" and type="ind" and fs="lustre" and unlimited="notset" and nn=10 and ppn=8 ' +%10 8 ind 1000.0 18.5541272529369 +%+ sqlite3 results_benchtool.db 'select nn, ppn, type, t*x*y*z*4/1024/1024, max(read)/1024 from p where app="benchtool" and type="coll" and fs="fuse" and unlimited="notset" and nn=10 and ppn=8 ' +%10 8 coll 1000.0 22.9363088999496 +%+ sqlite3 results_benchtool.db 'select nn, ppn, type, t*x*y*z*4/1024/1024, max(write)/1024 from p where app="benchtool" and type="coll" and fs="fuse" and unlimited="notset" and nn=10 and ppn=8 ' +%10 8 coll 1000.0 14.1118732992937 +%+ sqlite3 results_benchtool.db 'select nn, ppn, type, t*x*y*z*4/1024/1024, max(read)/1024 from p where app="benchtool" and type="ind" and fs="fuse" and unlimited="notset" and nn=10 and ppn=8 ' +%10 8 ind 1000.0 38.7201201759216 +%+ sqlite3 results_benchtool.db 'select nn, ppn, type, t*x*y*z*4/1024/1024, max(write)/1024 from p where app="benchtool" and type="ind" and fs="fuse" and unlimited="notset" and nn=10 and ppn=8 ' +%10 8 ind 1000.0 18.6272447947956 +\begin{figure}[tb] + \centering + \includegraphics[width=0.9\textwidth]{performance_benchtool_FS:lustre_IFACE:mpio_FILLED_notset_LIM:notset.png} + \caption{NetCDF performance for Lustre (similar to IME-FUSE)} + \label{fig:netcdf_perf} +\end{figure} +\textbf{Lustre vs. IME-FUSE:} +Generally, the performance looks very similar for Lustre and IME-FUSE, that is why we only included the picture for Lustre. There are a few differences: +(1) Collective I/O without chunking causes large variability while reading 16~KiB blocks, (2) and better performance while writing 10~MiB blocks on Lustre. +(3) If chunking is enabled and independent I/O is used, then 10~MiB block sizes can be read with a low variability. +The best performance achieved for collective read is 23~GiB/s write 14~GiB/s, and for independent read 40~GiB/s and write 18~GiB/s. + +\textbf{Chunking vs. no chunking:} +Read performance suffers a lot on both file systems, if chunking is enabled for small blocks. +The probability, that several NetCDF processes access the same chunk, increases for small block sizes. +In this case, the processes have to load the whole chunk on each node into memory, even if only a small part of it is required. +Such inefficient access patterns can lead to unnecessary data transfer over the network, i.e. when large parts of the data are pre-loaded, but aren't unused. +This doesn't apply to large block sizes. +Therefore, we can observe performance advantages. + +\textbf{Independent I/O vs. collective I/O:} +If chunking is enabled, collective I/O degrades the performance. +If chunking is disabled, it improves I/O for small blocks and degrades I/O of large blocks. +%Unfortunately, the chosen block sizes don't allow to determine the threshold. + +\textbf{Caching:} +For large block sizes (10204~KiB) independent chunked read performance outperforms the write performance. +We suppose that cache is responsible for this performance speed-up. + +\subsection{Performance variability with individual I/Os.} +This experiment is conducted measuring timing of 10,000 or 1,024 individual I/Os with a single process on IME test cluster on IME-FUSE and Lustre. +\Cref{fig:variability} shows the qualitative difference between the file systems. +The figure shows the density (like a smoothened histogram) of the individually timed I/Os. +\begin{figure}[bpt!] + \centering + \includegraphics[width=\textwidth]{density.png} + \caption{Density of timing individual I/O operations} + \label{fig:variability} +\end{figure} +We observe 1) the read operations on Lustre are faster than using IME-FUSE -- this is presumably due to client-side caching. +2) the random acceleration of IME improves write latencies/throughput for IME. + +\section{Conclusion} +IME is a burst buffer solution, that is completely transparent to applications and to users. +These properties make it beneficial for random workloads. +Read performance depends whether data is located on the IME flash or on Lustre. +The data migration policy is usually hidden from the users, so that read behaviour is not known in advanced. +There is an API though to allow users to stage data explicitly. + +For large access sizes and processes per node, IME was able to nearly saturate the network. +We did not achieve better performance with IME in all test scenarios, particularly, for the NetCDF benchmark. +The reason for the suboptimal performance gain of IME compared to Lustre may be due to: +1) the access pattern caused by NetCDF4 with HDF5 has a considerable overhead; +2) the Lustre storage from DDN is already well optimized; +3) the small and experimental laboratory setup that we used for testing. +We expect a significant performance gain once more clients access IME. +Further large-scale investigation is necessary. + +\section*{Acknowledgment} +{ +\small +%Thanks to Jean-Thomas Acquaviva for providing access to the IME test cluster and valuable feedback. +Thanks to DDN for providing access to the IME test cluster and to Jean-Thomas Acquaviva for the support. +%%Thanks to our sponsor William E. Allcock for providing access and feedback. +%%This research used resources of the Argonne Leadership Computing Facility, which is a DOE Office of Science User Facility supported under Contract DE-AC02-06CH11357. +} + +% +% ---- Bibliography ---- BibLatex +% + + +\bibliographystyle{splncs03} +\bibliography{bibliography}{} + + +% +% ---- Bibliography ---- +% +%\begin{thebibliography}{} + +%\end{thebibliography} +%\clearpage +%\addtocmark[2]{Author Index} % additional numbered TOC entry +%\renewcommand{\indexname}{Author Index} +%%\printindex +%\clearpage +%\addtocmark[2]{Subject Index} % additional numbered TOC entry +%\markboth{Subject Index}{Subject Index} +%\renewcommand{\indexname}{Subject Index} +%%\input{subjidx.ind} +\end{document} diff --git a/paper/paper.tex.latexmain b/paper/paper.tex.latexmain new file mode 100644 index 000000000..260ed70b4 --- /dev/null +++ b/paper/paper.tex.latexmain @@ -0,0 +1,2 @@ +let g:Tex_CompileRule_pdf='pdflatex -interaction=nonstopmode --shell-escape --enable--write18 $*' +%let g:Tex_CompileRule_pdf='lualatex -interaction=nonstopmode --shell-escape --enable--write18 $*' diff --git a/paper/splncs03.bst b/paper/splncs03.bst new file mode 100644 index 000000000..327916917 --- /dev/null +++ b/paper/splncs03.bst @@ -0,0 +1,1519 @@ +%% BibTeX bibliography style `splncs03' +%% +%% BibTeX bibliography style for use with numbered references in +%% Springer Verlag's "Lecture Notes in Computer Science" series. +%% (See Springer's documentation for llncs.cls for +%% more details of the suggested reference format.) Note that this +%% file will not work for author-year style citations. +%% +%% Use \documentclass{llncs} and \bibliographystyle{splncs03}, and cite +%% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. +%% +%% This file comes to you courtesy of Maurizio "Titto" Patrignani of +%% Dipartimento di Informatica e Automazione Universita' Roma Tre +%% +%% ================================================================================================ +%% This was file `titto-lncs-02.bst' produced on Wed Apr 1, 2009 +%% Edited by hand by titto based on `titto-lncs-01.bst' (see below) +%% +%% CHANGES (with respect to titto-lncs-01.bst): +%% - Removed the call to \urlprefix (thus no "URL" string is added to the output) +%% ================================================================================================ +%% This was file `titto-lncs-01.bst' produced on Fri Aug 22, 2008 +%% Edited by hand by titto based on `titto.bst' (see below) +%% +%% CHANGES (with respect to titto.bst): +%% - Removed the "capitalize" command for editors string "(eds.)" and "(ed.)" +%% - Introduced the functions titto.bbl.pages and titto.bbl.page for journal pages (without "pp.") +%% - Added a new.sentence command to separate with a dot booktitle and series in the inproceedings +%% - Commented all new.block commands before urls and notes (to separate them with a comma) +%% - Introduced the functions titto.bbl.volume for handling journal volumes (without "vol." label) +%% - Used for editors the same name conventions used for authors (see function format.in.ed.booktitle) +%% - Removed a \newblock to avoid long spaces between title and "In: ..." +%% - Added function titto.space.prefix to add a space instead of "~" after the (removed) "vol." label +%% ================================================================================================ +%% This was file `titto.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `vonx,nm-rvvc,yr-par,jttl-rm,volp-com,jwdpg,jwdvol,numser,ser-vol,jnm-x,btit-rm,bt-rm,edparxc,bkedcap,au-col,in-col,fin-bare,pp,ed,abr,mth-bare,xedn,jabr,and-com,and-com-ed,xand,url,url-blk,em-x,nfss,') +%% ---------------------------------------- +%% *** Tentative .bst file for Springer LNCS *** +%% +%% Copyright 1994-2007 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is a numerical citation style, and as such is standard LaTeX. + % It requires no extra package to interface to the main text. + % The form of the \bibitem entries is + % \bibitem{key}... + % Usage of \cite is as follows: + % \cite{key} ==>> [#] + % \cite[chap. 2]{key} ==>> [#, chap. 2] + % where # is a number determined by the ordering in the reference list. + % The order in the reference list is alphabetical by authors. + %--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + edition + editor + eid + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + } + {} + { label } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ +% newline$ +% "\newblock " write$ % removed for titto-lncs-01 + " " write$ % to avoid long spaces between title and "In: ..." + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ duplicate$ empty$ + 'pop$ + 'write$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + + +FUNCTION {add.colon} +{ duplicate$ empty$ + 'skip$ + { ":" * add.blank } + if$ +} + +FUNCTION {date.block} +{ + new.block +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +STRINGS {z} +FUNCTION {remove.dots} +{ 'z := + "" + { z empty$ not } + { z #1 #1 substring$ + z #2 global.max$ substring$ 'z := + duplicate$ "." = 'pop$ + { * } + if$ + } + while$ +} +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ skip$ } +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} +FUNCTION {titto.space.prefix} % always introduce a space +{ duplicate$ text.length$ #3 < + { " " } + { " " } + if$ + swap$ +} + + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "edn." } + +FUNCTION {bbl.volume} +{ "vol." } + +FUNCTION {titto.bbl.volume} % for handling journals +{ "" } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp." } + +FUNCTION {bbl.page} +{ "p." } + +FUNCTION {titto.bbl.pages} % for journals +{ "" } + +FUNCTION {titto.bbl.page} % for journals +{ "" } + +FUNCTION {bbl.chapter} +{ "chap." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {format.url} +{ url empty$ + { "" } +% { "\urlprefix\url{" url * "}" * } + { "\url{" url * "}" * } % changed in titto-lncs-02.bst + if$ +} + +INTEGERS { nameptr namesleft numnames } + + +STRINGS { bibinfo} + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}{, jj}{, f{.}.}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + "," * + t "others" = + { + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{.}.~}{vv~}{ll}{ jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + "," * + t "others" = + { + + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.authors} +{ author "author" format.names +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + " " * + get.bbl.editor +% capitalize + "(" swap$ * ")" * + * + } + if$ +} +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ + "title" bibinfo.check +} +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in capitalize + ":" * + " " * } + +FUNCTION {format.date} +{ + month "month" bibinfo.check + duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + remove.dots + } + if$ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " (" swap$ * ")" * + } + if$ +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { emphasize ", " * swap$ * } + if$ + "volume and number" number either.or.check + } + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ", " * + swap$ + n.dashify + pages multi.page.check + 'titto.bbl.pages + 'titto.bbl.page + if$ + swap$ tie.or.space.prefix + "pages" bibinfo.check + * * + * + } + if$ + } + if$ +} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { + ", " * + } + if$ + swap$ * + } + if$ +} +FUNCTION {format.vol.num.pages} % this function is used only for journal entries +{ volume field.or.null + duplicate$ empty$ 'skip$ + { +% bbl.volume swap$ tie.or.space.prefix + titto.bbl.volume swap$ titto.space.prefix +% rationale for the change above: for journals you don't want "vol." label +% hence it does not make sense to attach the journal number to the label when +% it is short + "volume" bibinfo.check + * * + } + if$ + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "(" swap$ * ")" * + } + if$ * + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check +} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { +% editor "editor" format.names.ed duplicate$ empty$ 'pop$ % changed by titto + editor "editor" format.names duplicate$ empty$ 'pop$ + { + " " * + get.bbl.editor +% capitalize + "(" swap$ * ") " * + * swap$ + * } + if$ + word.in swap$ * + } + if$ +} +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + key duplicate$ empty$ + { pop$ + journal duplicate$ empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } + { "journal" bibinfo.check emphasize word.in swap$ * } + if$ + } + { word.in swap$ * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + editor num.names$ duplicate$ + #2 > + { pop$ + "editor" bibinfo.check + " " * bbl.etal + * + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + "editor" bibinfo.check + " " * bbl.etal + * + } + { + bbl.and space.word + * editor #2 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + * + } + if$ + } + if$ + } + if$ +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + capitalize + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { format.booktitle duplicate$ empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + } + { word.in swap$ * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } + if$ + } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { + journal + "journal" bibinfo.check + "journal" output.check + add.blank + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + add.colon + } + { format.authors output.nonnull + add.colon + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + new.sentence + format.number.series output + format.publisher.address output + } + { + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + add.colon + new.block + format.title "title" output.check + new.block + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + add.colon + } + { format.authors output.nonnull + add.colon + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + new.sentence + format.number.series output + format.publisher.address output + } + { + format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.chapter.pages output + new.sentence + format.number.series output + format.publisher.address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence % added by titto + format.bvolume output + format.pages output + new.sentence + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization "organization" bibinfo.check + duplicate$ empty$ 'pop$ + { output + address "address" bibinfo.check output + } + if$ + } + { format.authors output.nonnull } + if$ + add.colon + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { + address new.block.checka + address "address" bibinfo.check output + } + 'skip$ + if$ + } + { + organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + } + if$ + format.edition output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.btitle + "title" output.check + new.block + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + add.colon + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished "howpublished" bibinfo.check output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry + empty.misc.check +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.btitle + "title" output.check + new.block + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization "organization" bibinfo.check output + } + { format.editors output.nonnull } + if$ + add.colon + new.block + format.btitle "title" output.check + format.bvolume output + editor empty$ + { publisher empty$ + { format.number.series output } + { + new.sentence + format.number.series output + format.publisher.address output + } + if$ + } + { publisher empty$ + { + new.sentence + format.number.series output + format.organization.address output } + { + new.sentence + format.number.series output + organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + if$ + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title + "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + format.date output +% new.block + format.url output +% new.block + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } +READ +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +INTEGERS { len } +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll{ }}{ ff{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { t sortify * } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {presort} +SORT +STRINGS { longest.label } +INTEGERS { number.label longest.label.width } +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\providecommand{\urlprefix}{URL }" + write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `titto.bst'. + +