From: ali Date: Tue, 22 Apr 2014 17:09:09 +0000 (+0200) Subject: UPDATE BY ALI X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/JournalMultiRounds.git/commitdiff_plain/3dd98144e8d6f95ea84f80f0c173013c27308ffb?ds=inline;hp=8b2a2285846a3d1b72874a550765461525f5bb45 UPDATE BY ALI --- diff --git a/elsarticle-harv.bst b/elsarticle-harv.bst new file mode 100644 index 0000000..fb668b8 --- /dev/null +++ b/elsarticle-harv.bst @@ -0,0 +1,1537 @@ +%% +%% Copyright 2007, 2008, 2009 Elsevier Ltd +%% +%% This file is part of the 'Elsarticle Bundle'. +%% --------------------------------------------- +%% +%% It may be distributed under the conditions of the LaTeX Project Public +%% License, either version 1.2 of this license or (at your option) any +%% later version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% The list of all files belonging to the 'Elsarticle Bundle' is +%% given in the file `manifest.txt'. +%% + + %%------------------------------------------------------------------- + %% This bibliography style file is intended for texts in ENGLISH + %% This is an author-year citation style bibliography. As such, it is + %% non-standard LaTeX, and requires a special package file + %% to function properly. + %% Such a package is natbib.sty by Patrick W. Daly + %% The form of the \bibitem entries is + %% \bibitem[Jones et al.(1990)]{key}... + %% \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + %% The essential feature is that the label (the part in brackets) consists + %% of the author names, as they should appear in the citation, with the year + %% in parentheses following. There must be no space before the opening + %% parenthesis! + %% With natbib v5.3, a full list of authors may also follow the year. + %% In natbib.sty, it is possible to define the type of enclosures that is + %% really wanted (brackets or parentheses), but in either case, there must + %% be parentheses in the label. + %% The \cite command functions as follows: + %% \citet{key} ==>> Jones et al. (1990) + %% \citet*{key} ==>> Jones, Baker, and Smith (1990) + %% \citep{key} ==>> (Jones et al., 1990) + %% \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + %% \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + %% \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + %% \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32) + %% \citeauthor{key} ==>> Jones et al. + %% \citeauthor*{key} ==>> Jones, Baker, and Smith + %% \citeyear{key} ==>> 1990 + %%--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + } + {} + { label extra.label sort.label short.list } + +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$ + } + { 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} +{ add.period$ + write$ + 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$ +} + +%%SP 2003/07/25 +%% No longer used +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + new.sentence +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ skip$ } + +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} +{ "Edition" } + +FUNCTION {bbl.volume} +{ "Vol." } + +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 {bbl.chapter} +{ "Ch." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +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."} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +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. Softw. Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Programming"} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Gr."} + +MACRO {toms} {"ACM Trans. Math. Softw."} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} + +MACRO {tcs} {"Theoretical Comput. Sci."} + +FUNCTION {write.url} +{ url empty$ + { skip$ } + { "\newline\urlprefix\url{" url * "}" * write$ newline$ } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +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 * } + { + "," * + 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$ +} +FUNCTION {format.names.ed} +{ format.names } +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { " (" * bbl.editors * ")" * } + { " (" * bbl.editor * ")" * } + if$ + } + if$ +} + +FUNCTION {format.in.editors} +{ editor empty$ + { "" } + { editor format.names.ed + editor num.names$ #1 > + { " (" * bbl.editors * ")" * } + { " (" * bbl.editor * ")" * } + if$ + } + 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$ * + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ + } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[{" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "}]{" * 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} +{ year duplicate$ empty$ + { "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" } + 'skip$ + if$ + month empty$ + 'skip$ + { month + " " * swap$ * + } + if$ + extra.label * + before.all 'output.state := + ", " swap$ * +} + +FUNCTION {format.btitle} +{ title +} + +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$ + { "" } + { bbl.volume volume tie.or.space.connect + series empty$ + 'skip$ + { bbl.of space.word * series emphasize * } + 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.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { convert.edition "l" change.case$ " " * bbl.edition * } + { convert.edition "t" change.case$ " " * bbl.edition * } + 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 + { bbl.pages pages n.dashify tie.or.space.connect } + { bbl.page pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { + ", " * + pages n.dashify * + } + if$ + } + if$ +} + +%%SP 2001/01/23 +%% Only used in articles +FUNCTION {format.vol.num.pages} +{ +%%SP 2001/01/23 +%% Add the leading space only if there is a volume + %% volume field.or.null + " " + volume empty$ + { pop$ "" } + { volume * } + if$ + number empty$ + 'skip$ + { + "~(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { word.in booktitle * } + { word.in format.in.editors * ", " * + booktitle * } + if$ + } + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bbl.techrep } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + word.in + } + { bbl.volume capitalize + volume tie.or.space.connect + bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} + +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address empty$ + 'skip$ + { address * } + if$ + } + { t * + address empty$ + 'skip$ + { ", " * address * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.publisher.address} +{ publisher empty$ + { "empty publisher in " cite$ * warning$ + "" + } + { publisher } + if$ + format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization empty$ + { "" } + { organization } + if$ + format.org.or.pub +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + crossref missing$ + { journal + "journal" output.check +%%SP 2001/01/23 +%% Add the space in format.vol.num.pages + %% add.blank + before.all 'output.state := + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.journal.pages + format.note output + fin.entry + write.url +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { format.edition output + new.sentence + format.bvolume output + format.number.series output + new.sentence + format.publisher.address output + } + { + new.sentence + format.book.crossref output.nonnull + } + if$ + format.note output + fin.entry + write.url +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + howpublished output + address output + format.note output + fin.entry + write.url +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { + format.edition output + new.sentence + format.bvolume output + format.number.series output + new.sentence + format.publisher.address output + format.chapter.pages "chapter and pages" output.check + } + { + format.chapter.pages "chapter and pages" output.check + new.sentence + format.book.crossref output.nonnull + } + if$ + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + new.sentence + format.bvolume output + format.number.series output + new.sentence + format.publisher.address output + format.chapter.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + new.sentence + format.bvolume output + format.number.series output + new.sentence + publisher empty$ + { format.organization.address output } + { organization output + format.publisher.address output + } + if$ +%%SP 2001/01/23 +%% format.pages output + } + { format.incoll.inproc.crossref output.nonnull +%%SP 2001/01/23 +%% format.pages output + } + if$ +%%SP 2001/01/23 + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.btitle "title" output.check + new.sentence + organization output + address output + format.edition output + format.note output + fin.entry + write.url +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + bbl.mthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.note output + fin.entry + write.url +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.title output + new.sentence + howpublished output + format.note output + fin.entry + write.url +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + bbl.phdthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.note output + fin.entry + write.url +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output + format.date "year" output.check + date.block + format.btitle "title" output.check + new.sentence + format.bvolume output + format.number.series output + new.sentence + publisher empty$ + { format.organization.address output } + { organization output + format.publisher.address output + } + if$ + format.note output + fin.entry + write.url +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + format.tr.number output.nonnull + institution "institution" output.check + address output + format.note output + fin.entry + write.url +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + format.note "note" output.check + fin.entry + write.url +} + +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 {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal * + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal * + } + { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + { pop$ "????" } + 'skip$ + if$ + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv{ } }{ll{ }}{ f{ }}{ 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 {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { last.label next.extra } + +INTEGERS { last.extra.num number.label } + +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +EXECUTE {initialize.extra.label.stuff} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" + write$ newline$ + "\expandafter\ifx\csname url\endcsname\relax" + write$ newline$ + " \def\url#1{\texttt{#1}}\fi" + write$ newline$ + "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" + 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 `elsarticle-harv.bst'. diff --git a/elsarticle-num-names.bst b/elsarticle-num-names.bst new file mode 100644 index 0000000..51a4a3c --- /dev/null +++ b/elsarticle-num-names.bst @@ -0,0 +1,1461 @@ +%% +%% Copyright 2007, 2008, 2009 Elsevier Ltd +%% +%% This file is part of the 'Elsarticle Bundle'. +%% --------------------------------------------- +%% +%% It may be distributed under the conditions of the LaTeX Project Public +%% License, either version 1.2 of this license or (at your option) any +%% later version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% The list of all files belonging to the 'Elsarticle Bundle' is +%% given in the file `manifest.txt'. +%% +%% +%% This is file `elsearticle-num-names.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `head,exlang,ay,nat,seq-no,nm-init,ed-au,dt-jnl,dt-end,atit-u,jttl-rm,vnum-sp,volp-blk,jdt-p,pp-last,num-xser,jnm-x,btit-rm,bt-rm,bkpg-x,isbn,issn,doi,edpar,bkedcap,blk-com,in-col,english,ppx,ed,abr,xedn,varand,xand,url,url-blk,bibinfo,nfss,,{}') +%% english.mbs (with options: `exlang,ay,nat,seq-no,nm-init,ed-au,dt-jnl,dt-end,atit-u,jttl-rm,vnum-sp,volp-blk,jdt-p,pp-last,num-xser,jnm-x,btit-rm,bt-rm,bkpg-x,isbn,issn,doi,edpar,bkedcap,blk-com,in-col,english,ppx,ed,abr,xedn,varand,xand,url,url-blk,bibinfo,nfss,,{}') +%% merlin.mbs (with options: `tail,exlang,ay,nat,seq-no,nm-init,ed-au,dt-jnl,dt-end,atit-u,jttl-rm,vnum-sp,volp-blk,jdt-p,pp-last,num-xser,jnm-x,btit-rm,bt-rm,bkpg-x,isbn,issn,doi,edpar,bkedcap,blk-com,in-col,english,ppx,ed,abr,xedn,varand,xand,url,url-blk,bibinfo,nfss,,{}') +%% ---------------------------------------- +%% *** Journal of Sound and Vibration *** +%% +%% Copyright 1994-2004 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}[2004/02/09 4.13 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + doi + edition + editor + eid + howpublished + institution + isbn + issn + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + } + {} + { label extra.label sort.label short.list } +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$ + } + { 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} +{ add.period$ + write$ + 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 {date.block} +{ + skip$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} +FUNCTION {tie.or.space.prefix} +{ 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. + %------------------------------------------------------------------- + % Begin module: + % \ProvidesFile{english.mbs}[2003/11/06 4.2 (PWD)] + + % 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 {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "" } + +FUNCTION {bbl.page} +{ "" } + +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."} + + % End module: english.mbs +%% Copyright 1994-2004 Patrick W Daly +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"} +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + "\bibinfo{" swap$ * "}{" * swap$ * "}" * + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + "\bibinfo{" swap$ * "}{" * swap$ * "}" * + } + if$ + } + if$ +} +FUNCTION {format.url} +{ url empty$ + { "" } + { "\urlprefix\url{" url * "}" * } + if$ +} + +STRINGS { bibinfo} +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ '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.names.ed} +{ + format.names +} +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + 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.isbn} +{ isbn "isbn" bibinfo.check + duplicate$ empty$ 'skip$ + { + "ISBN " swap$ * + } + if$ +} + +FUNCTION {format.issn} +{ issn "issn" bibinfo.check + duplicate$ empty$ 'skip$ + { + "ISSN " swap$ * + } + if$ +} + + FUNCTION {format.doi} + { doi "doi" bibinfo.check + duplicate$ empty$ 'skip$ + { + "\doi{" 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 + "title" bibinfo.check +} +FUNCTION {format.full.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { + numnames #2 > + { "," * } + 'skip$ + if$ + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[{" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "}]{" * 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 + ":" * + " " * } + +FUNCTION {format.date} +{ year "year" bibinfo.check duplicate$ empty$ + { + "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" + } + 'skip$ + if$ + extra.label * +} +FUNCTION{format.year} +{ year "year" bibinfo.check duplicate$ empty$ + { "empty year in " cite$ * + "; set to ????" * + warning$ + pop$ "????" + } + { + } + if$ + extra.label * + "(" swap$ * ")" * +} +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$ + { swap$ bbl.of space.word * swap$ + emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { number "number" bibinfo.check } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + 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 + { + n.dashify + } + { + } + if$ + "pages" bibinfo.check + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + " " * + format.year * " " * + swap$ + n.dashify + "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} +{ volume field.or.null + duplicate$ empty$ 'skip$ + { + "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$ * +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + } + 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$ + { + " " * + get.bbl.editor + capitalize + "(" swap$ * "), " * + * swap$ + * } + if$ + word.in swap$ * + } + 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} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \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 + author format.key output + format.title "title" output.check + crossref missing$ + { + journal + "journal" bibinfo.check + "journal" output.check + add.blank + format.vol.num.pages output + } + { format.article.crossref output.nonnull + } + if$ + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ + format.issn output + format.doi output + format.url output + format.note output + fin.entry +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.number.series output + format.publisher.address output + } + { + format.book.crossref output.nonnull + } + if$ + format.edition output + format.isbn output + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output + format.title "title" output.check + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.isbn output + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.chapter.pages "chapter and pages" output.check + format.number.series output + format.publisher.address output + } + { + format.chapter.pages "chapter and pages" output.check + format.book.crossref output.nonnull + } + if$ + format.edition output + crossref missing$ + { format.isbn output } + 'skip$ + if$ + format.pages "pages" output.check + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + format.publisher.address output + format.edition output + format.isbn output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.pages "pages" output.check + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.isbn output + format.issn output + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages "pages" output.check + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output + format.btitle "title" output.check + organization "organization" bibinfo.check output + address "address" bibinfo.check output + format.edition output + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.btitle + "title" output.check + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output + format.title output + howpublished "howpublished" bibinfo.check output + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.btitle + "title" output.check + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output + format.btitle "title" output.check + format.bvolume output + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.isbn output + format.issn output + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title + "title" output.check + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + format.url output + format.note output + format.date "year" output.check + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + format.doi output + format.url output + format.note "note" output.check + format.date output + 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 {format.lab.names} +{ 's := + "" 't := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal * + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal * + } + { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + { pop$ "????" } + { purify$ #-1 #4 substring$ } + if$ + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv{ } }{ll{ }}{ f{ }}{ 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 {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} +INTEGERS { seq.num } +FUNCTION {init.seq} +{ #0 'seq.num :=} +EXECUTE {init.seq} +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} +FUNCTION {presort} +{ calc.label + label sortify + " " + * + seq.num #1 + 'seq.num := + seq.num int.to.fix + 'sort.label := + sort.label + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} +SORT +STRINGS { last.label next.extra } +INTEGERS { last.extra.num number.label } +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + #0 'number.label := +} +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} +EXECUTE {initialize.extra.label.stuff} +ITERATE {forward.pass} +REVERSE {reverse.pass} +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {bib.sort.order} +SORT +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\providecommand{\urlprefix}{URL }" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax" + write$ newline$ + " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" + write$ newline$ + " \providecommand{\doi}[1]{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\url{#1}\endgroup}\fi" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + 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 `elsarticle-num-names.bst'. diff --git a/elsarticle-num.bst b/elsarticle-num.bst new file mode 100644 index 0000000..0257b4f --- /dev/null +++ b/elsarticle-num.bst @@ -0,0 +1,1517 @@ +%% +%% Copyright 2007, 2008, 2009 Elsevier Ltd +%% +%% This file is part of the 'Elsarticle Bundle'. +%% --------------------------------------------- +%% +%% It may be distributed under the conditions of the LaTeX Project Public +%% License, either version 1.2 of this license or (at your option) any +%% later version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% The list of all files belonging to the 'Elsarticle Bundle' is +%% given in the file `manifest.txt'. +%% +%%% Modification of BibTeX style file elsarticle-num.bst +%%% ... by urlbst, version 0.6 (marked with "% urlbst") +%%% See +%%% Added webpage entry type, and url and lastchecked fields. +%%% Added eprint support. +%%% Added DOI support. +%%% Added hyperref support. +%%% Original headers follow... + +%% +%% This is file `elsarticle-num.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `,seq-no,nm-init,ed-au,dt-end,yr-par,yrp-x,jttl-rm,thtit-a,vnum-sp,volp-blk,jdt-p,pp-last,jnm-x,btit-rm,bt-rm,pub-date,pub-xpar,pre-edn,url,url-nl,edpar,blk-com,in-col,pp,ed,abr,ednx,ord,jabr,and-xcom,xand,em-x,nfss') +%% After docstrip generation some manual changes were made (SP) + +%% ---------------------------------------- + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + eprint % urlbst + doi % urlbst + url % urlbst + lastchecked % urlbst + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl openinlinelink closeinlinelink } % urlbst... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver } +FUNCTION {init.urlbst.variables} +{ + "Available from: " 'urlintro := % prefix before URL + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref + "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref + #1 'addeprints := % 0=no eprints; 1=include eprints + #1 'adddoiresolver := % 0=no DOI resolver; 1=include it + #2 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs + #1 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +FUNCTION {init.state.consts} +{ #0 'outside.brackets := % urlbst + #1 'open.brackets := + #2 'within.brackets := + #3 'close.brackets := + + #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull.original} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html: }{" * 'openinlinelink := + "\special {html:}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} +FUNCTION {output.nonnull} +{ % Save the thing we've been asked to output + 's := + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets + bracket.state close.brackets = + { "]" * + outside.brackets 'bracket.state := + } + 'skip$ + if$ + bracket.state outside.brackets = + { % We're outside all brackets -- this is the normal situation. + % Write out what's currently at the top of the stack, using the + % original output.nonnull function. + s + add.inlinelink + output.nonnull.original % invoke the original output.nonnull + } + { % Still in brackets. Add open-bracket or (continuation) comma, add the + % new text (in s) to the top of the stack, and move to the close-brackets + % state, ready for next time (unless inbrackets resets it). If we come + % into this branch, then output.state is carefully undisturbed. + bracket.state open.brackets = + { " [" * } + { ", " * } % bracket.state will be within.brackets + if$ + s * + close.brackets 'bracket.state := + } + if$ +} + +FUNCTION {inbrackets} +{ bracket.state close.brackets = + { within.brackets 'bracket.state := } % reset the state: not open nor closed + { open.brackets 'bracket.state := } + if$ +} + +FUNCTION {format.lastchecked} +{ lastchecked empty$ + { "" } + { inbrackets "cited " lastchecked * } + if$ +} + +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.original} +{ add.period$ + write$ + 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 {date.block} +{ + add.blank +} + +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} +{ skip$ } + +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} +{ "Edition" } + +FUNCTION {bbl.volume} +{ "Vol." } + +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 {bbl.chapter} +{ "Ch." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +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."} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +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. Softw. Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Programming"} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Gr."} + +MACRO {toms} {"ACM Trans. Math. Softw."} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} + +MACRO {tcs} {"Theoretical Comput. Sci."} + +FUNCTION {write.url} +{ url empty$ + { skip$ } + { "\newline\urlprefix\url{" url * "}" * write$ newline$ } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f.~}{vv~}{ll}{, jj}" format.name$ + '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$ +} +FUNCTION {format.names.ed} +{ format.names } +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { " (" * bbl.editors * ")" * } + { " (" * bbl.editor * ")" * } + if$ + } + if$ +} + +FUNCTION {format.in.editors} +{ editor empty$ + { "" } + { editor format.names.ed + editor num.names$ #1 > + { " (" * bbl.editors * ")" * } + { " (" * bbl.editor * ")" * } + if$ + } + 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$ * + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ + } + if$ +} + +FUNCTION {output.bibitem.original} +{ 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 + ":" * + " " * } + +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$ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " (" swap$ * ")" * + } + if$ +} + +FUNCTION{format.year} +{ year duplicate$ empty$ + { "empty year in " cite$ * warning$ pop$ "" } + { "(" swap$ * ")" * } + if$ +} + +FUNCTION {format.btitle} +{ title +} + +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$ + { "" } + { bbl.volume volume tie.or.space.connect + series empty$ + 'skip$ + { bbl.of space.word * series emphasize * } + 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.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { convert.edition "l" change.case$ " " * bbl.edition * } + { convert.edition "t" change.case$ " " * bbl.edition * } + 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 + { bbl.pages pages n.dashify tie.or.space.connect } + { bbl.page pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { + " " * + format.year * " " * + pages n.dashify * + } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ + % volume field.or.null + " " + volume empty$ + { pop$ "" } + { volume * } + if$ + number empty$ + 'skip$ + { + "~(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { word.in booktitle * } + { word.in format.in.editors * ", " * + booktitle * } + 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$ + { bbl.techrep } + '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$ + "" + } + { word.in journal emphasize * } + if$ + } + { word.in key * " " *} + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal * + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal * + } + { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + word.in + } + { bbl.volume volume tie.or.space.connect + 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$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { word.in booktitle * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.org.or.pub} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + 'skip$ + if$ + address empty$ t empty$ and + year empty$ and + 'skip$ + { + t empty$ + { address empty$ + 'skip$ + { address * } + if$ + } + { t * + address empty$ + 'skip$ + { ", " * address * } + if$ + } + if$ + year empty$ + 'skip$ + { t empty$ address empty$ and + 'skip$ + { ", " * } + if$ + year * + } + if$ + } + if$ +} + +FUNCTION {format.publisher.address} +{ publisher empty$ + { "empty publisher in " cite$ * warning$ + "" + } + { publisher } + if$ + format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization empty$ + { "" } + { organization } + if$ + format.org.or.pub +} + +FUNCTION {make.href.null} +{ + pop$ +} +FUNCTION {make.href.hypertex} +{ + "\special {html: }" * swap$ * + "\special {html:}" * +} +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {output.url} +{ url empty$ + 'skip$ + { new.block + format.url output + format.lastchecked output + } + if$ +} + +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ +} + +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + +FUNCTION {webpage} +{ output.bibitem + author empty$ + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ + format.title "title" output.check + inbrackets "online" output + new.block + year empty$ + 'skip$ + { format.date "year" output.check } + if$ + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. + new.block + note output + fin.entry +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + crossref missing$ + { journal + "journal" output.check + % add.blank + before.all 'output.state := + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.journal.pages + format.note output + fin.entry + write.url +} + +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$ + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { format.edition output + format.bvolume output + format.number.series output + format.publisher.address output + } + { + format.book.crossref output.nonnull + } + if$ + format.note output + fin.entry + write.url +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + howpublished output + address output + format.note output + format.date output + fin.entry + write.url +} + +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$ + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { + format.edition output + format.bvolume output + format.number.series output + format.publisher.address output + format.chapter.pages "chapter and pages" output.check + } + { + format.chapter.pages "chapter and pages" output.check + format.book.crossref output.nonnull + } + if$ + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + format.bvolume output + format.number.series output + format.publisher.address output + format.chapter.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + format.bvolume output + format.number.series output + publisher empty$ + { format.organization.address output } + { organization output + format.publisher.address output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + author empty$ + { organization empty$ + { + address output + } + 'skip$ + if$ + } + { + organization output + address output + } + if$ + format.edition output + format.note output + format.date output + fin.entry + write.url +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + bbl.mthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.note output + format.date "year" output.check + fin.entry + write.url +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title output + howpublished output + format.note output + format.date output + fin.entry + write.url + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + bbl.phdthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.note output + format.date "year" output.check + fin.entry + write.url +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + format.bvolume output + format.number.series output + editor empty$ + { publisher empty$ + 'skip$ + { + format.publisher.address output + } + if$ + } + { publisher empty$ + { + format.organization.address output } + { + organization output + format.publisher.address output + } + if$ + } + if$ + format.note output + fin.entry + write.url +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + format.tr.number output.nonnull + institution "institution" output.check + address output + format.note output + format.date "year" output.check + fin.entry + write.url +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + format.note "note" output.check + format.date output + fin.entry + write.url +} + +FUNCTION {default.type} { misc } + +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$ + "\expandafter\ifx\csname url\endcsname\relax" + write$ newline$ + " \def\url#1{\texttt{#1}}\fi" + write$ newline$ + "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \def\href#1#2{#2} \def\path#1{#1}\fi" + write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.urlbst.variables} +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 `elsarticle-num.bst'. diff --git a/elsarticle-template-num.aux b/elsarticle-template-num.aux new file mode 100644 index 0000000..7a56934 --- /dev/null +++ b/elsarticle-template-num.aux @@ -0,0 +1,207 @@ +\relax +\citation{Sudip03} +\citation{Akyildiz02} +\citation{conti2014mobile} +\citation{Nayak04} +\citation{Sudip03} +\citation{Misra05} +\citation{Akyildiz02} +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{2}} +\citation{varga} +\citation{cardei2006energy} +\citation{zorbas2010solving} +\@writefile{toc}{\contentsline {section}{\numberline {2}Related works}{3}} +\newlabel{rw}{{2}{3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Centralized Approaches}{3}} +\citation{Slijepcevic01powerefficient} +\citation{abrams2004set} +\citation{Slijepcevic01powerefficient} +\citation{cardei2005improving} +\citation{Slijepcevic01powerefficient} +\citation{zorbas2010solving} +\citation{Slijepcevic01powerefficient} +\citation{cardei2005energy} +\citation{pujari2011high} +\citation{cardei2005energy} +\citation{cardei2005improving} +\citation{berman04} +\citation{garg98} +\citation{Gallais06,Tian02,Ye03,Zhang05,HeinzelmanCB02,yardibi2010distributed} +\citation{Berman05efficientenergy} +\citation{lu2003coverage} +\citation{Tian02} +\citation{prasad2007distributed} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Distributed approaches}{5}} +\citation{yardibi2010distributed} +\citation{ChinhVu} +\citation{Huang:2003:CPW:941350.941367} +\citation{idrees2014coverage} +\citation{Bang,Zhixin,Zhang} +\citation{Misra} +\citation{Shibo} +\citation{xu2001geography} +\citation{Ye03} +\citation{cardei2005maximum} +\citation{ghosh2008coverage} +\citation{wang2011coverage} +\citation{mulligan2010coverage} +\citation{yang2014novel} +\citation{HeShibo} +\citation{die09} +\@writefile{toc}{\contentsline {section}{\numberline {3}Preliminaries}{7}} +\newlabel{Pr}{{3}{7}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Coverage Problem}{7}} +\citation{wang2010clique} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Network Lifetime}{8}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Activity Scheduling }{8}} +\@writefile{toc}{\contentsline {section}{\numberline {4} The DiLCO Protocol Description}{8}} +\newlabel{pd}{{4}{8}} +\citation{Zhang05} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1} Assumptions and Models}{9}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Wireless Sensor Node represented by (a)5, (b)9 and (c)13 primary points respectively}}{10}} +\newlabel{fig1}{{1}{10}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}The Main Idea}{11}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces DiLCO protocol}}{11}} +\newlabel{fig2}{{2}{11}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}Information Exchange Phase}{12}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}Leader Election Phase}{12}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.3}Decision phase}{12}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.4}Sensing phase}{12}} +\@writefile{loa}{\contentsline {algocf}{\numberline {1}{\ignorespaces LEADER ELECTION}}{13}} +\newlabel{alg:LEADER}{{1}{13}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}DiLCO protocol Algorithm}{13}} +\@writefile{loa}{\contentsline {algocf}{\numberline {2}{\ignorespaces DiLCO($s_j$)}}{14}} +\newlabel{alg:DMRCLOP}{{2}{14}} +\citation{pedraza2006} +\@writefile{toc}{\contentsline {section}{\numberline {5}Coverage problem formulation}{15}} +\newlabel{cp}{{5}{15}} +\citation{varga} +\newlabel{eq13}{{3}{16}} +\newlabel{eq14}{{4}{16}} +\newlabel{eq:ip2r}{{5}{16}} +\citation{ChinhVu} +\citation{raghunathan2002energy} +\citation{raghunathan2002energy} +\citation{raghunathan2002energy} +\@writefile{toc}{\contentsline {section}{\numberline {6}Simulation Results and Analysis}{17}} +\newlabel{exp}{{6}{17}} +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Relevant parameters for network initializing.}}{17}} +\newlabel{table3}{{1}{17}} +\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces The Energy Consumption Model}}{18}} +\newlabel{table4}{{2}{18}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Performance Comparison for differnet subregions}{20}} +\newlabel{sub1}{{6.1}{20}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.1}The impact of the number of rounds on the coverage ratio}{20}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The impact of the number of rounds on the coverage ratio for 150 deployed nodes}}{21}} +\newlabel{fig3}{{3}{21}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2}The impact of the number of rounds on the active sensors ratio}{21}} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces The impact of the number of rounds on the active sensors ratio for 150 deployed nodes }}{21}} +\newlabel{fig4}{{4}{21}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.3}The impact of the number of rounds on the energy saving ratio}{22}} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces The impact of the number of rounds on the energy saving ratio for 150 deployed nodes}}{22}} +\newlabel{fig5}{{5}{22}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.4}The percentage of stopped simulation runs}{23}} +\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces The percentage of stopped simulation runs compared to the number of rounds for 150 deployed nodes }}{23}} +\newlabel{fig6}{{6}{23}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.5}The Energy Consumption}{23}} +\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces The Energy Consumption}}{24}} +\newlabel{fig7}{{7}{24}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.6}The impact of the number of sensors on execution time}{24}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.7}The Network Lifetime}{24}} +\@writefile{lot}{\contentsline {table}{\numberline {3}{\ignorespaces The Execution Time(s) vs The Number of Sensors}}{25}} +\newlabel{table1}{{3}{25}} +\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces The Network Lifetime }}{25}} +\newlabel{fig8}{{8}{25}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Performance Comparison for Different Primary Point Models}{26}} +\newlabel{sub2}{{6.2}{26}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1}The impact of the number of rounds on the coverage ratio}{26}} +\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces The impact of the number of rounds on the coverage ratio for 150 deployed nodes}}{26}} +\newlabel{fig33}{{9}{26}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2}The impact of the number of rounds on the active sensors ratio}{27}} +\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces The impact of the number of rounds on the active sensors ratio for 150 deployed nodes }}{27}} +\newlabel{fig44}{{10}{27}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3}The impact of the number of rounds on the energy saving ratio}{28}} +\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces The impact of the number of rounds on the energy saving ratio for 150 deployed nodes}}{28}} +\newlabel{fig55}{{11}{28}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4}The percentage of stopped simulation runs}{28}} +\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces The percentage of stopped simulation runs compared to the number of rounds for 150 deployed nodes }}{29}} +\newlabel{fig66}{{12}{29}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.5}The Energy Consumption}{29}} +\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces The Energy Consumption}}{30}} +\newlabel{fig77}{{13}{30}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.6}The impact of the number of sensors on execution time}{30}} +\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces The Execution Time(s) vs The Number of Sensors }}{31}} +\newlabel{figt}{{14}{31}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.7}The Network Lifetime}{31}} +\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces The Network Lifetime }}{31}} +\newlabel{fig88}{{15}{31}} +\citation{ChinhVu} +\citation{xu2001geography} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Performance Comparison for Different Approaches}{32}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.1}The impact of the number of rounds on the coverage ratio}{32}} +\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces The impact of the number of rounds on the coverage ratio for 150 deployed nodes}}{32}} +\newlabel{fig333}{{16}{32}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2}The impact of the number of rounds on the active sensors ratio}{33}} +\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces The impact of the number of rounds on the active sensors ratio for 150 deployed nodes }}{33}} +\newlabel{fig444}{{17}{33}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3}The impact of the number of rounds on the energy saving ratio}{34}} +\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces The impact of the number of rounds on the energy saving ratio for 150 deployed nodes}}{34}} +\newlabel{fig555}{{18}{34}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.4}The percentage of stopped simulation runs}{35}} +\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces The percentage of stopped simulation runs compared to the number of rounds for 150 deployed nodes }}{35}} +\newlabel{fig666}{{19}{35}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.5}The Energy Consumption}{36}} +\@writefile{lof}{\contentsline {figure}{\numberline {20}{\ignorespaces The Energy Consumption}}{36}} +\newlabel{fig777}{{20}{36}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.6}The Network Lifetime}{37}} +\@writefile{lof}{\contentsline {figure}{\numberline {21}{\ignorespaces The Network Lifetime }}{37}} +\newlabel{fig888}{{21}{37}} +\bibstyle{elsarticle-num} +\bibdata{elsarticle-template-num} +\bibcite{Sudip03}{{1}{}{{}}{{}}} +\bibcite{Akyildiz02}{{2}{}{{}}{{}}} +\bibcite{conti2014mobile}{{3}{}{{}}{{}}} +\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion and Future Works}{38}} +\newlabel{sec:conclusion}{{7}{38}} +\bibcite{Nayak04}{{4}{}{{}}{{}}} +\bibcite{Misra05}{{5}{}{{}}{{}}} +\bibcite{varga}{{6}{}{{}}{{}}} +\bibcite{cardei2006energy}{{7}{}{{}}{{}}} +\bibcite{zorbas2010solving}{{8}{}{{}}{{}}} +\bibcite{Slijepcevic01powerefficient}{{9}{}{{}}{{}}} +\bibcite{abrams2004set}{{10}{}{{}}{{}}} +\bibcite{cardei2005improving}{{11}{}{{}}{{}}} +\bibcite{cardei2005energy}{{12}{}{{}}{{}}} +\bibcite{pujari2011high}{{13}{}{{}}{{}}} +\bibcite{berman04}{{14}{}{{}}{{}}} +\bibcite{garg98}{{15}{}{{}}{{}}} +\bibcite{Gallais06}{{16}{}{{}}{{}}} +\bibcite{Tian02}{{17}{}{{}}{{}}} +\bibcite{Ye03}{{18}{}{{}}{{}}} +\bibcite{Zhang05}{{19}{}{{}}{{}}} +\bibcite{HeinzelmanCB02}{{20}{}{{}}{{}}} +\bibcite{yardibi2010distributed}{{21}{}{{}}{{}}} +\bibcite{Berman05efficientenergy}{{22}{}{{}}{{}}} +\bibcite{lu2003coverage}{{23}{}{{}}{{}}} +\bibcite{prasad2007distributed}{{24}{}{{}}{{}}} +\bibcite{ChinhVu}{{25}{}{{}}{{}}} +\bibcite{Huang:2003:CPW:941350.941367}{{26}{}{{}}{{}}} +\bibcite{idrees2014coverage}{{27}{}{{}}{{}}} +\bibcite{Bang}{{28}{}{{}}{{}}} +\bibcite{Zhixin}{{29}{}{{}}{{}}} +\bibcite{Zhang}{{30}{}{{}}{{}}} +\bibcite{Misra}{{31}{}{{}}{{}}} +\bibcite{Shibo}{{32}{}{{}}{{}}} +\bibcite{xu2001geography}{{33}{}{{}}{{}}} +\bibcite{cardei2005maximum}{{34}{}{{}}{{}}} +\bibcite{pc10}{{35}{}{{}}{{}}} +\bibcite{ghosh2008coverage}{{36}{}{{}}{{}}} +\bibcite{wang2011coverage}{{37}{}{{}}{{}}} +\bibcite{mulligan2010coverage}{{38}{}{{}}{{}}} +\bibcite{yang2014novel}{{39}{}{{}}{{}}} +\bibcite{HeShibo}{{40}{}{{}}{{}}} +\bibcite{die09}{{41}{}{{}}{{}}} +\bibcite{wang2010clique}{{42}{}{{}}{{}}} +\bibcite{pedraza2006}{{43}{}{{}}{{}}} +\bibcite{raghunathan2002energy}{{44}{}{{}}{{}}} +\providecommand\NAT@force@numbers{}\NAT@force@numbers diff --git a/elsarticle-template-num.bbl b/elsarticle-template-num.bbl new file mode 100644 index 0000000..3ea29bc --- /dev/null +++ b/elsarticle-template-num.bbl @@ -0,0 +1,225 @@ +\begin{thebibliography}{10} +\expandafter\ifx\csname url\endcsname\relax + \def\url#1{\texttt{#1}}\fi +\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi +\expandafter\ifx\csname href\endcsname\relax + \def\href#1#2{#2} \def\path#1{#1}\fi + +\bibitem{Sudip03} +S.~Misra, I.~Woungang, S.~C. Misra, Guide to Wireless Sensor Networks, + Springer-Verlag London Limited, 2009. + +\bibitem{Akyildiz02} +I.~F. Akyildiz, M.~C. Vuran, Wireless Sensor Networks, John Wiley and Sons + Ltd., 2010. + +\bibitem{conti2014mobile} +M.~Conti, S.~Giordano, Mobile ad hoc networking: milestones, challenges, and + new research directions, Communications Magazine, IEEE 52~(1) (2014) 85--96. + +\bibitem{Nayak04} +A.~Nayak, I.~Stojmenovic, Wireless Sensor and Actuator Networks: Algorithms and + Protocols for Scalable Coordination and Data Communication, John Wiley and + Sons, Inc, 2010. + +\bibitem{Misra05} +S.~Misra, M.~P. Kumar, M.~S. Obaidat, Connectivity preserving localized + coverage algorithm for area monitoring using wireless sensor networks, + Computer Communications 34~(12) (2011) 1484--1496. + +\bibitem{varga} +A.~Varga, Omnet++ discrete event simulation system, Available: + http://www.omnetpp.org. + +\bibitem{cardei2006energy} +M.~Cardei, J.~Wu, Energy-efficient coverage problems in wireless ad-hoc sensor + networks, Computer communications 29~(4) (2006) 413--420. + +\bibitem{zorbas2010solving} +D.~Zorbas, D.~Glynos, P.~Kotzanikolaou, C.~Douligeris, Solving coverage + problems in wireless sensor networks using cover sets, Ad Hoc Networks 8~(4) + (2010) 400--415. + +\bibitem{Slijepcevic01powerefficient} +S.~Slijepcevic, M.~Potkonjak, Power efficient organization of wireless sensor + networks, in: IEEE International conference on Communications, 2001, pp. + 472--476. + +\bibitem{abrams2004set} +Z.~Abrams, A.~Goel, S.~Plotkin, Set k-cover algorithms for energy efficient + monitoring in wireless sensor networks, in: Proceedings of the 3rd + international symposium on Information processing in sensor networks, ACM, + 2004, pp. 424--432. + +\bibitem{cardei2005improving} +M.~Cardei, D.-Z. Du, Improving wireless sensor network lifetime through power + aware organization, Wireless Networks 11~(3) (2005) 333--340. + +\bibitem{cardei2005energy} +M.~Cardei, M.~T. Thai, Y.~Li, W.~Wu, Energy-efficient target coverage in + wireless sensor networks, in: INFOCOM 2005. 24th Annual Joint Conference of + the IEEE Computer and Communications Societies. Proceedings IEEE, Vol.~3, + IEEE, 2005, pp. 1976--1984. + +\bibitem{pujari2011high} +A.~K. Pujari, High-energy-first (hef) heuristic for energy-efficient target + coverage problem., International Journal of Ad Hoc, Sensor \& Ubiquitous + Computing 2~(1). + +\bibitem{berman04} +P.~Berman, G.~Calinescu, Power efficient monitoring management in sensor + networks, in: Proceedings of IEEE Wireless Communication and Networking + Conference (WCNC'04), 2004, pp. 2329--2334. + +\bibitem{garg98} +N.~Garg, J.~Koenemann, Faster and simpler algorithms for multicommodity flow + and other fractional packing problems., in: Proceedings of the 39th Annual + Symposium on Foundations of Computer Science, FOCS '98, 1998, pp. 300--309. + +\bibitem{Gallais06} +A.~Gallais, J.~Carle, D.~Simplot-Ryl, I.~Stojmenovic, Localized sensor area + coverage with low communication overhead, in: Proceedings of the Fourth + Annual IEEE International Conference on Pervasive Computing and + Communications, 2006, pp. 328--337. + +\bibitem{Tian02} +D.~Tian, N.~D. Georganas, A coverage-preserving node scheduling scheme for + large wireless sensor networks, in: Proceedings of the 1st ACM international + workshop on Wireless sensor networks and applications, WSNA '02, ACM, 2002, + pp. 32--41. + +\bibitem{Ye03} +F.~Ye, G.~Zhong, J.~Cheng, S.~Lu, L.~Zhang, Peas: A robust energy conserving + protocol for long-lived sensor networks, in: Proceedings of the 23rd + International Conference on Distributed Computing Systems, ICDCS'03, 2003, + pp. 28--37. + +\bibitem{Zhang05} +H.~Zhang, J.~C. Hou, Maintaining sensing coverage and connectivity in large + sensor networks, Ad Hoc {\&} Sensor Wireless Networks 1~(1-2). + +\bibitem{HeinzelmanCB02} +W.~B. Heinzelman, A.~P. Chandrakasan, H.~Balakrishnan, An application-specific + protocol architecture for wireless microsensor networks, IEEE Transactions on + Wireless Communications 1~(4) (2002) 660--670. + +\bibitem{yardibi2010distributed} +T.~Yardibi, E.~Karasan, A distributed activity scheduling algorithm for + wireless sensor networks with partial coverage, Wireless Networks 16~(1) + (2010) 213--225. + +\bibitem{Berman05efficientenergy} +P.~Berman, G.~Calinescu, C.~Shah, A.~Zelikovsky, Efficient energy management in + sensor networks, in: Ad Hoc and Sensor Networks. Nova Science Publishers, + Nova Science Publisher, 2005. + +\bibitem{lu2003coverage} +J.~Lu, T.~Suda, Coverage-aware self-scheduling in sensor networks, in: Computer + Communications, 2003. CCW 2003. Proceedings. 2003 IEEE 18th Annual Workshop + on, IEEE, 2003, pp. 117--123. + +\bibitem{prasad2007distributed} +S.~K. Prasad, A.~Dhawan, Distributed algorithms for lifetime of wireless sensor + networks based on dependencies among cover sets, in: High Performance + Computing--HiPC 2007, Springer, 2007, pp. 381--392. + +\bibitem{ChinhVu} +C.~Vu, S.~Gao, W.~Deshmukh, Y.~Li, Distributed energy-efficient scheduling + approach for k-coverage in wireless sensor networks, MILCOM 0 (2006) 1--7. +\newblock \href + {http://dx.doi.org/http://doi.ieeecomputersociety.org/10.1109/MILCOM.2006.302146} + {\path{doi:http://doi.ieeecomputersociety.org/10.1109/MILCOM.2006.302146}}. + +\bibitem{Huang:2003:CPW:941350.941367} +C.-F. HUANG, Y.-C. TSENG, The coverage problem in a wireless sensor network, + Mobile Networks and Applications 10~(4) (2005) 519--528. + +\bibitem{idrees2014coverage} +A.~K. Idrees, K.~Deschinkel, M.~Salomon, R.~Couturier, Coverage and lifetime + optimization in heterogeneous energy wireless sensor networks, in: ICN 2014, + The Thirteenth International Conference on Networks, 2014, pp. 49--54. + +\bibitem{Bang} +B.~Wang, H.~B. Lim, D.~Ma, A coverage-aware clustering protocol for wireless + sensor networks, Computer Networks 56~(5) (2012) 1599--1611. + +\bibitem{Zhixin} +Z.~Liu, Q.~Zheng, L.~Xue, X.~Guan, A distributed energy-efficient clustering + algorithm with improved coverage in wireless sensor networks, Future + Generation Computer Systems 28~(5) (2012) 780--790. + +\bibitem{Zhang} +L.~Zhang, Q.~Zhu, J.~Wang, Adaptive clustering for maximizing network lifetime + and maintaining coverage, JOURNAL OF NETWORKS 8~(3) (2013) 616--622. + +\bibitem{Misra} +S.~Misra, M.~P. Kumar, M.~S. Obaidat, Connectivity preserving localized + coverage algorithm for area monitoring using wireless sensor networks, + Computer Communications 34~(12) (2011) 1484--1496. + +\bibitem{Shibo} +S.~He, J.~Chen, X.~Li, X.~Shen, Y.~Sun, Leveraging prediction to improve the + coverage of wireless sensor networks, IEEE TRANSACTIONS ON PARALLEL AND + DISTRIBUTED SYSTEMS 23~(4) (2012) 701--712. + +\bibitem{xu2001geography} +Y.~Xu, J.~Heidemann, D.~Estrin, Geography-informed energy conservation for ad + hoc routing, in: Proceedings of the 7th annual international conference on + Mobile computing and networking, ACM, 2001, pp. 70--84. + +\bibitem{cardei2005maximum} +M.~Cardei, J.~Wu, M.~Lu, M.~O. Pervaiz, Maximum network lifetime in wireless + sensor networks with adjustable sensing ranges, in: Wireless And Mobile + Computing, Networking And Communications, 2005.(WiMob'2005), IEEE + International Conference on, Vol.~3, IEEE, 2005, pp. 438--445. + +\bibitem{pc10} +T.~Padmavathy, M.~Chitra, Extending the network lifetime of wireless sensor + networks using residual energy extraction-hybrid scheduling algorithm, Int. + J. of Communications, Network and System Sciences 3~(1) (2010) 98--106. + +\bibitem{ghosh2008coverage} +A.~Ghosh, S.~K. Das, Coverage and connectivity issues in wireless sensor + networks: A survey, Pervasive and Mobile Computing 4~(3) (2008) 303--334. + +\bibitem{wang2011coverage} +B.~Wang, Coverage problems in sensor networks: A survey, ACM Computing Surveys + (CSUR) 43~(4) (2011) 32. + +\bibitem{mulligan2010coverage} +R.~Mulligan, H.~M. Ammari, Coverage in wireless sensor networks: A survey., + Network Protocols \& Algorithms 2~(2). + +\bibitem{yang2014novel} +C.~Yang, K.-W. Chin, Novel algorithms for complete targets coverage in energy + harvesting wireless sensor networks, Communications Letters, IEEE 18~(1) + (2014) 118--121. +\newblock \href {http://dx.doi.org/10.1109/LCOMM.2013.111513.132436} + {\path{doi:10.1109/LCOMM.2013.111513.132436}}. + +\bibitem{HeShibo} +S.~He, X.~Gong, J.~Zhang, J.~Chen, Y.~Sun, Curve-based deployment for barrier + coverage in wireless sensor networks, Wireless Communications, IEEE + Transactions on 13~(2) (2014) 724--735. +\newblock \href {http://dx.doi.org/10.1109/TWC.2013.121813.130198} + {\path{doi:10.1109/TWC.2013.121813.130198}}. + +\bibitem{die09} +I.~Dietrich, F.~Dressler, On the lifetime of wireless sensor networks, TOSN + 5~(1). + +\bibitem{wang2010clique} +L.~Wang, R.~Wei, Y.~Lin, B.~Wang, A clique base node scheduling method for + wireless sensor networks, Journal of Network and Computer Applications 33~(4) + (2010) 383--396. + +\bibitem{pedraza2006} +F.~Pedraza, A.~L. Medaglia, A.~Garcia, Efficient coverage algorithms for + wireless sensor networks, in: Proceedings of the 2006 Systems and Information + Engineering Design Symposium, 2006, pp. 78--83. + +\bibitem{raghunathan2002energy} +V.~Raghunathan, C.~Schurgers, S.~Park, M.~B. Srivastava, Energy-aware wireless + microsensor networks, Signal Processing Magazine, IEEE 19~(2) (2002) 40--50. + +\end{thebibliography} diff --git a/elsarticle-template-num.bib b/elsarticle-template-num.bib new file mode 100755 index 0000000..6ff1c2b --- /dev/null +++ b/elsarticle-template-num.bib @@ -0,0 +1,479 @@ +@ARTICLE{Torkestani, + author = "J. A. Torkestani", + title = "An adaptive energy-efficient area coverage algorithm for wireless sensor networks ", + journal = {Ad Hoc Networks}, + volume = {11}, + number = {6}, + pages = {1655-1666}, + year = {2013}, + } + +@ARTICLE{Zhang, + author = "L. Zhang and Q. Zhu and J. Wang", + title = "Adaptive Clustering for Maximizing Network Lifetime and Maintaining Coverage ", + journal = {JOURNAL OF NETWORKS}, + volume = {8}, + number = {3}, + pages = {616-622}, + year = {2013}, + } + +@ARTICLE{pc10, + author = "T.V. Padmavathy and M. Chitra", + title = "Extending the Network Lifetime of Wireless Sensor Networks Using Residual Energy Extraction-Hybrid Scheduling Algorithm", + JOURNAL = {Int. J. of Communications, Network and System Sciences}, + VOLUME = {3}, + NUMBER = {1}, +PAGES = {98-106}, +YEAR = {2010}, + } + + +@ARTICLE{Misra, + author = "S. Misra and M. P. Kumar and M. S. Obaidat", + title = "Connectivity preserving localized coverage algorithm for area monitoring using +wireless sensor networks ", + JOURNAL = {Computer Communications}, + VOLUME = {34}, + NUMBER = {12}, + PAGES = {1484-1496}, + YEAR = {2011}, +} + + +@ARTICLE{Zhixin, + author = "Z. Liu and Q. Zheng and L. Xue and X. Guan", + title = "A distributed energy-efficient clustering algorithm with improved coverage in +wireless sensor networks", + JOURNAL = {Future Generation Computer Systems}, + VOLUME = {28}, + NUMBER = {5}, + PAGES = {780-790}, + YEAR = {2012}, + } + +@ARTICLE{Bang, + author = "B. Wang and H. B. Lim and D. Ma ", + title = "A coverage-aware clustering protocol for wireless sensor networks", + JOURNAL = {Computer Networks}, + VOLUME = {56}, + NUMBER = {5}, + PAGES = {1599-1611}, + YEAR = {2012}, + } + + +@ARTICLE{Shibo, + author = " S. He and J. Chen and X. Li and X. Shen and Y. Sun ", + title = "Leveraging Prediction to Improve the Coverage of Wireless Sensor Networks", + JOURNAL = {IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS}, + VOLUME = {23}, + NUMBER = {4}, + PAGES = {701-712}, + YEAR = {2012}, + } + +@book{Akyildiz02, + author = {I. F. Akyildiz and M. C. Vuran}, + title = {Wireless Sensor Networks}, + publisher = {John Wiley and Sons Ltd.}, + year = {2010}, +} + +@book{Sudip03, + author = {S. Misra and I. Woungang and S. C. Misra}, + title = {Guide to Wireless Sensor Networks}, + publisher = {Springer-Verlag London Limited}, + year = {2009}, +} + +@book{Nayak04, + author = {A. Nayak and I. Stojmenovic}, + title = {Wireless Sensor and Actuator Networks: Algorithms and Protocols for Scalable Coordination and Data Communication}, + publisher = {John Wiley and Sons, Inc}, + year = {2010}, +} + +@ARTICLE{Misra05, + author = "S. Misra and M. P. Kumar and M. S. Obaidat", + title = "Connectivity preserving localized coverage algorithm for area monitoring using wireless +sensor networks", + JOURNAL = {Computer Communications}, + VOLUME = {34}, + NUMBER = {12}, + PAGES = {1484-1496}, + YEAR = {2011}, + } + +@ARTICLE{Huang:2003:CPW:941350.941367, + author = "C.-F. HUANG and Y.-C. TSENG", + title = "The Coverage Problem in a Wireless Sensor Network", + JOURNAL = {Mobile Networks and Applications}, + VOLUME = {10}, + NUMBER = {4}, + PAGES = {519-528}, + YEAR = {2005}, + } + + +@ARTICLE{Zhang05, + author = {H. Zhang and J. C. Hou}, + title = {Maintaining Sensing Coverage and Connectivity in Large Sensor Networks}, + journal = {Ad Hoc {\&} Sensor Wireless Networks}, + volume = {1}, + number = {1-2}, + year = {2005}, + +} + +@ARTICLE{HeinzelmanCB02, + author = {W. B. Heinzelman and A. P. Chandrakasan and H. Balakrishnan}, + title = {An application-specific protocol architecture for wireless microsensor networks}, + journal = {IEEE Transactions on Wireless Communications}, + volume = {1}, + number = {4}, + pages = {660-670}, + year = {2002}, +} + + +@inproceedings{pedraza2006, + author = {F. Pedraza and A. L. Medaglia and A. Garcia}, + title = {Efficient coverage algorithms for wireless sensor networks}, + booktitle = {Proceedings of the 2006 Systems and Information Engineering Design Symposium}, + pages = {78-83}, + YEAR = {2006}, +} + +@PhDThesis{chin2007, +author = {C. T. Vu}, +title = {DISTRIBUTED ENERGY-EFFICIENT SOLUTIONS FOR AREA COVERAGE PROBLEMS IN WIRELESS SENSOR NETWORKS}, +school = {Georgia State University}, +year = {2009}, +} + +@ARTICLE{varga, +author = {A. Varga}, +title = {OMNeT++ Discrete Event Simulation System}, +journal = {Available: http://www.omnetpp.org}, +year = {2003}, +} + + +@ARTICLE{die09, + author = {Isabel Dietrich and + Falko Dressler}, + title = {On the lifetime of wireless sensor networks}, + journal = {TOSN}, + volume = {5}, + number = {1}, + year = {2009}, + ee = {http://doi.acm.org/10.1145/1464420.1464425}, + bibsource = {DBLP, http://dblp.uni-trier.de} +} + + + +@ARTICLE{mulligan2010coverage, + title={Coverage in Wireless Sensor Networks: A Survey.}, + author={Mulligan, Raymond and Ammari, Habib M}, + journal={Network Protocols \& Algorithms}, + volume={2}, + number={2}, + year={2010} +} + + +@phdthesis{vu2009distributed, + title={Distributed energy-efficient solutions for area coverage problems in wireless sensor networks}, + author={Vu, Chinh Trung}, + year={2009}, + school={GEORGIA STATE UNIVERSITY} +} + + +@ARTICLE{raghunathan2002energy, + title={Energy-aware wireless microsensor networks}, + author={Raghunathan, Vijay and Schurgers, Curt and Park, Sung and Srivastava, Mani B}, + journal={Signal Processing Magazine, IEEE}, + volume={19}, + number={2}, + pages={40--50}, + year={2002}, + publisher={IEEE} +} + +@ARTICLE{ChinhVu, +author = {Chinh Vu and Shan Gao and Wiwek Deshmukh and Yingshu Li}, +title = {Distributed Energy-Efficient Scheduling Approach for K-Coverage in Wireless Sensor Networks}, +journal ={MILCOM}, +volume = {0}, +isbn = {1-4244-0617-X}, +year = {2006}, +pages = {1-7}, +doi = {http://doi.ieeecomputersociety.org/10.1109/MILCOM.2006.302146}, +publisher = {IEEE Computer Society}, +address = {Los Alamitos, CA, USA}, +} + + +@ARTICLE{ghosh2008coverage, + title={Coverage and connectivity issues in wireless sensor networks: A survey}, + author={Ghosh, Amitabha and Das, Sajal K}, + journal={Pervasive and Mobile Computing}, + volume={4}, + number={3}, + pages={303--334}, + year={2008}, + publisher={Elsevier} +} + +@ARTICLE{wang2011coverage, + title={Coverage problems in sensor networks: A survey}, + author={Wang, Bang}, + journal={ACM Computing Surveys (CSUR)}, + volume={43}, + number={4}, + pages={32}, + year={2011}, + publisher={ACM} +} + +@ARTICLE{yang2014novel, +author={Changlin Yang and Kwan-Wu Chin}, +journal={Communications Letters, IEEE}, +title={Novel Algorithms for Complete Targets Coverage in Energy Harvesting Wireless Sensor Networks}, +year={2014}, +month={January}, +volume={18}, +number={1}, +pages={118-121}, +keywords={energy harvesting;linear programming;secondary cells;telecommunication power supplies;wireless sensor networks;MUA;WSN;activation schedule;complete targets coverage;energy conservation;energy harvesting wireless sensor networks;linear programming based solution;maximum utility algorithm;network lifetime maximization problem;recharging opportunities;sensor nodes;sleep state;time interval;wake-up schedule;Batteries;Energy harvesting;Erbium;Monitoring;Schedules;Sensors;Wireless sensor networks;Wireless sensor network;energy harvesting;targets coverage}, +doi={10.1109/LCOMM.2013.111513.132436}, +ISSN={1089-7798},} + +@ARTICLE{HeShibo, +author={He, Shibo and Gong, Xiaowen and Zhang, Junshan and Chen, Jiming and Sun, Youxian}, +journal={Wireless Communications, IEEE Transactions on}, +title={Curve-Based Deployment for Barrier Coverage in Wireless Sensor Networks}, +year={2014}, +month={February}, +volume={13}, +number={2}, +pages={724-735}, +keywords={Algorithm design and analysis;Approximation algorithms;Approximation methods;Educational institutions;Sensors;Wireless communication;Wireless sensor networks;Barrier coverage;curved-based deployment;deployment algorithms;optimal deployment curve}, +doi={10.1109/TWC.2013.121813.130198}, +ISSN={1536-1276}, +} + + +@inproceedings{Zorbas2007, + author = {D. Zorbas and D. Glynos and P. Kotzanikolaou and C. Douligeris}, + title = {B\{GOP\}: an adaptive coverage algorithm for wireless sensor networks}, + booktitle = {Proceedings of the 13th European Wireless Conference}, + series = {EW'07}, + year = {2007}, + location = {Paris, France}, + +} + +@ARTICLE{zorbas2010solving, + title={Solving coverage problems in wireless sensor networks using cover sets}, + author={Zorbas, Dimitrios and Glynos, Dimitris and Kotzanikolaou, Panayiotis and Douligeris, Christos}, + journal={Ad Hoc Networks}, + volume={8}, + number={4}, + pages={400-415}, + year={2010}, + publisher={Elsevier}, +} + +@INPROCEEDINGS{Slijepcevic01powerefficient, + author = {S. Slijepcevic and M. Potkonjak}, + title = {Power Efficient Organization of Wireless Sensor Networks}, + booktitle = {IEEE International conference on Communications}, + year = {2001}, + pages = {472-476} +} + +@ARTICLE{cardei2006energy, + title={Energy-efficient coverage problems in wireless ad-hoc sensor networks}, + author={Cardei, Mihaela and Wu, Jie}, + journal={Computer communications}, + volume={29}, + number={4}, + pages={413-420}, + year={2006}, + publisher={Elsevier} +} + +@inproceedings{cardei2005energy, + title={Energy-efficient target coverage in wireless sensor networks}, + author={Cardei, Mihaela and Thai, My T and Li, Yingshu and Wu, Weili}, + booktitle={INFOCOM 2005. 24th Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings IEEE}, + volume={3}, + pages={1976-1984}, + year={2005}, + organization={IEEE} +} + +@ARTICLE{cardei2005improving, + title={Improving wireless sensor network lifetime through power aware organization}, + author={Cardei, Mihaela and Du, Ding-Zhu}, + journal={Wireless Networks}, + volume={11}, + number={3}, + pages={333-340}, + year={2005}, + publisher={Springer-Verlag New York, Inc.} +} + +@inproceedings{abrams2004set, + title={Set k-cover algorithms for energy efficient monitoring in wireless sensor networks}, + author={Abrams, Zo{\"e} and Goel, Ashish and Plotkin, Serge}, + booktitle={Proceedings of the 3rd international symposium on Information processing in sensor networks}, + pages={424-432}, + year={2004}, + organization={ACM} +} + +@ARTICLE{pujari2011high, + title={High-Energy-First (HEF) Heuristic for Energy-Efficient Target Coverage Problem.}, + author={Pujari, Arun K}, + journal={International Journal of Ad Hoc, Sensor \& Ubiquitous Computing}, + volume={2}, + number={1}, + year={2011} +} + +@INPROCEEDINGS{berman04, + author = {P. Berman and G. Calinescu}, + title = {Power Efficient Monitoring Management in Sensor Networks}, + booktitle = {Proceedings of IEEE Wireless Communication and Networking Conference (WCNC'04)}, + year = {2004}, + pages = {2329--2334} +} + +@inproceedings{Gallais06, + author = {Gallais, Antoine and Carle, Jean and Simplot-Ryl, David and Stojmenovic, Ivan}, + title = {Localized Sensor Area Coverage with Low Communication Overhead}, + booktitle = {Proceedings of the Fourth Annual IEEE International Conference on Pervasive Computing and Communications}, + year = {2006}, + pages = {328-337}, + +} + +@inproceedings{Tian02, + author = {Tian, Di and Georganas, Nicolas D.}, + title = {A coverage-preserving node scheduling scheme for large wireless sensor networks}, + booktitle = {Proceedings of the 1st ACM international workshop on Wireless sensor networks and applications}, + series = {WSNA '02}, + year = {2002}, + pages = {32-41}, + publisher = {ACM}, +} + +@inproceedings{Ye03, + author = {Ye, Fan and Zhong, Gary and Cheng, Jesse and Lu, Songwu and Zhang, Lixia}, + title = {PEAS: A Robust Energy Conserving Protocol for Long-lived Sensor Networks}, + booktitle = {Proceedings of the 23rd International Conference on Distributed Computing Systems}, + series = {ICDCS'03}, + year = {2003}, + pages = {28-37}, +} + + +@INPROCEEDINGS{Berman05efficientenergy, + author = {P. Berman and G. Calinescu and C. Shah and A. Zelikovsky}, + title = {Efficient energy management in sensor networks}, + booktitle = {Ad Hoc and Sensor Networks. Nova Science Publishers}, + year = {2005}, + publisher = {Nova Science Publisher} +} + +@inproceedings{lu2003coverage, + title={Coverage-aware self-scheduling in sensor networks}, + author={Lu, Jun and Suda, Tatsuya}, + booktitle={Computer Communications, 2003. CCW 2003. Proceedings. 2003 IEEE 18th Annual Workshop on}, + pages={117--123}, + year={2003}, + organization={IEEE} +} + +@incollection{prasad2007distributed, + title={Distributed algorithms for lifetime of wireless sensor networks based on dependencies among cover sets}, + author={Prasad, Sushil K and Dhawan, Akshaye}, + booktitle={High Performance Computing--HiPC 2007}, + pages={381-392}, + year={2007}, + publisher={Springer} +} + +@inproceedings{cardei2005maximum, + title={Maximum network lifetime in wireless sensor networks with adjustable sensing ranges}, + author={Cardei, Mihaela and Wu, Jie and Lu, Mingming and Pervaiz, Mohammad O}, + booktitle={Wireless And Mobile Computing, Networking And Communications, 2005.(WiMob'2005), IEEE International Conference on}, + volume={3}, + pages={438--445}, + year={2005}, + organization={IEEE} +} + +@inproceedings{garg98, + author = {Garg, Naveen and Koenemann, Jochen}, + title = {Faster and Simpler Algorithms for Multicommodity Flow and other Fractional Packing Problems.}, + booktitle = {Proceedings of the 39th Annual Symposium on Foundations of Computer Science}, + series = {FOCS '98}, + year = {1998}, + pages = {300-309}, +} + +@article{wang2010clique, + title={A clique base node scheduling method for wireless sensor networks}, + author={Wang, Lei and Wei, Ruizhong and Lin, Yaping and Wang, Bo}, + journal={Journal of Network and Computer Applications}, + volume={33}, + number={4}, + pages={383--396}, + year={2010}, + publisher={Elsevier} +} + +@article{yardibi2010distributed, + title={A distributed activity scheduling algorithm for wireless sensor networks with partial coverage}, + author={Yardibi, Tarik and Karasan, Ezhan}, + journal={Wireless Networks}, + volume={16}, + number={1}, + pages={213--225}, + year={2010}, + publisher={Springer} +} + +@article{conti2014mobile, + title={Mobile ad hoc networking: milestones, challenges, and new research directions}, + author={Conti, Marco and Giordano, Silvia}, + journal={Communications Magazine, IEEE}, + volume={52}, + number={1}, + pages={85--96}, + year={2014}, + publisher={IEEE} +} + +@inproceedings{idrees2014coverage, + title={Coverage and Lifetime Optimization in Heterogeneous Energy Wireless Sensor Networks}, + author={Idrees, Ali Kadhum and Deschinkel, Karine and Salomon, Michel and Couturier, Rapha{\"e}l}, + booktitle={ICN 2014, The Thirteenth International Conference on Networks}, + pages={49--54}, + year={2014} +} + +@inproceedings{xu2001geography, + title={Geography-informed energy conservation for ad hoc routing}, + author={Xu, Ya and Heidemann, John and Estrin, Deborah}, + booktitle={Proceedings of the 7th annual international conference on Mobile computing and networking}, + pages={70--84}, + year={2001}, + organization={ACM} +} \ No newline at end of file diff --git a/elsarticle-template-num.blg b/elsarticle-template-num.blg new file mode 100644 index 0000000..2ec4554 --- /dev/null +++ b/elsarticle-template-num.blg @@ -0,0 +1,48 @@ +This is BibTeX, Version 0.99d (TeX Live 2012/Debian) +Capacity: max_strings=35307, hash_size=35307, hash_prime=30011 +The top-level auxiliary file: elsarticle-template-num.aux +The style file: elsarticle-num.bst +Database file #1: elsarticle-template-num.bib +Warning--empty pages in Berman05efficientenergy +You've used 44 entries, + 2937 wiz_defined-function locations, + 940 strings with 13291 characters, +and the built_in function-call counts, 14354 in all, are: += -- 1350 +> -- 413 +< -- 16 ++ -- 167 +- -- 123 +* -- 925 +:= -- 1837 +add.period$ -- 47 +call.type$ -- 44 +change.case$ -- 41 +chr.to.int$ -- 0 +cite$ -- 45 +duplicate$ -- 507 +empty$ -- 1690 +format.name$ -- 164 +if$ -- 3853 +int.to.chr$ -- 0 +int.to.str$ -- 44 +missing$ -- 47 +newline$ -- 143 +num.names$ -- 44 +pop$ -- 316 +preamble$ -- 1 +purify$ -- 0 +quote$ -- 0 +skip$ -- 1017 +stack$ -- 0 +substring$ -- 825 +swap$ -- 149 +text.length$ -- 16 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 0 +warning$ -- 1 +while$ -- 103 +width$ -- 46 +write$ -- 380 +(There was 1 warning) diff --git a/elsarticle-template-num.log b/elsarticle-template-num.log new file mode 100644 index 0000000..ac9c4c0 --- /dev/null +++ b/elsarticle-template-num.log @@ -0,0 +1,947 @@ +This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian) (format=pdflatex 2014.3.11) 21 APR 2014 23:14 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**elsarticle-template-num.tex +(./elsarticle-template-num.tex +LaTeX2e <2011/06/27> +Babel and hyphenation patterns for english, dumylang, nohyphenation, lo +aded. +(./elsarticle.cls +Document Class: elsarticle 2009/09/17, 1.20b: Elsevier Ltd +\@bls=\dimen102 +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2007/10/19 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo +File: size12.clo 2007/10/19 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen103 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 1999/03/16 v1.13 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 91. + +(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count87 +)) +\Gin@req@height=\dimen104 +\Gin@req@width=\dimen105 +) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/pifont.sty +Package: pifont 2005/04/12 PSNFSS-v9.2a Pi font support (SPQR) +LaTeX Font Info: Try loading font information for U+pzd on input line 63. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/upzd.fd +File: upzd.fd 2001/06/04 font definitions for U/pzd. +) +LaTeX Font Info: Try loading font information for U+psy on input line 64. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/upsy.fd +File: upsy.fd 2001/06/04 font definitions for U/psy. +)) +\c@tnote=\count88 +\c@fnote=\count89 +\c@cnote=\count90 +\c@ead=\count91 +\c@author=\count92 +\@eadauthor=\toks15 +\c@affn=\count93 +\absbox=\box26 +\keybox=\box27 +\Columnwidth=\dimen106 +\space@left=\dimen107 +\els@boxa=\box28 +\els@boxb=\box29 +\leftMargin=\dimen108 +\@enLab=\toks16 +\@sep=\skip43 +\@@sep=\skip44 + +(./elsarticle-template-num.spl) +(/usr/share/texlive/texmf-dist/tex/latex/natbib/natbib.sty +Package: natbib 2010/09/13 8.31b (PWD, AO) +\bibhang=\skip45 +\bibsep=\skip46 +LaTeX Info: Redefining \cite on input line 694. +\c@NAT@ctr=\count94 +) +\splwrite=\write3 +\openout3 = `elsarticle-template-num.spl'. + +\appnamewidth=\dimen109 +) +(/usr/share/texlive/texmf-dist/tex/latex/algorithm2e/algorithm2e.sty +Package: algorithm2e 2008/00/00 v3.10 algorithms environments +\c@AlgoLine=\count95 + +(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/xspace.sty +Package: xspace 2009/10/20 v1.13 Space after command names (DPC,MH) +) +(/usr/share/texlive/texmf-dist/tex/latex/relsize/relsize.sty +Package: relsize 2011/09/21 ver 4.0 + +Examine \normalsize starts \@setfontsize size may be \@xiipt. +Examine \small starts \@setfontsize size may be \@xipt. +Examine \footnotesize starts \@setfontsize size may be \@xpt. +Examine \large starts \@setfontsize size may be \@xivpt. +Examine \Large starts \@setfontsize size may be \@xviipt. +Examine \LARGE starts \@setfontsize size may be \@xxpt. +Examine \scriptsize starts \@setfontsize size may be \@viiipt. +Examine \tiny starts \@setfontsize size may be \@vipt. +Examine \huge starts \@setfontsize size may be \@xxvpt. +Examine \Huge starts \@setfontsize size may be \@xxvpt. ) +******************************************************** +Package `algorithm2e' Release 4.01 -- december 14 2009 -- +- algorithm2e-announce@lirmm.fr mailing list for announcement about releases +- algorithm2e-discussion@lirmm.fr mailing list for discussion about package +subscribe by emailing sympa@lirmm.fr with 'subscribe ' +- Author: Christophe Fiorio (fiorio@lirmm.fr) +******************************************************** +\skiptotal=\skip47 +\skiplinenumber=\skip48 +\skiprule=\skip49 +\skiphlne=\skip50 +\skiptext=\skip51 +\skiplength=\skip52 +\algomargin=\skip53 +\skipalgocfslide=\skip54 +\algowidth=\dimen110 +\inoutsize=\dimen111 +\inoutline=\dimen112 +\interspacetitleruled=\dimen113 +\interspacealgoruled=\dimen114 +\interspacetitleboxruled=\dimen115 +\algocf@inoutbox=\box30 +\algocf@inputbox=\box31 +\AlCapSkip=\skip55 +\AlCapHSkip=\skip56 +\algocf@nlbox=\box32 +\algocf@hangingbox=\box33 +\algocf@capbox=\box34 +\algoheightruledefault=\skip57 +\algoheightrule=\skip58 +\algotitleheightruledefault=\skip59 +\algotitleheightrule=\skip60 +\c@algocfline=\count96 +\c@algocfproc=\count97 +\c@algocf=\count98 +\algocf@algoframe=\box35 +\algocf@algobox=\box36 +) (/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty +Package: multicol 2011/06/27 v1.7a multicolumn formatting (FMi) +\c@tracingmulticols=\count99 +\mult@box=\box37 +\multicol@leftmargin=\dimen116 +\c@unbalance=\count100 +\c@collectmore=\count101 +\doublecol@number=\count102 +\multicoltolerance=\count103 +\multicolpretolerance=\count104 +\full@width=\dimen117 +\page@free=\dimen118 +\premulticols=\dimen119 +\postmulticols=\dimen120 +\multicolsep=\skip61 +\multicolbaselineskip=\skip62 +\partial@page=\box38 +\last@line=\box39 +\mult@rightbox=\box40 +\mult@grightbox=\box41 +\mult@gfirstbox=\box42 +\mult@firstbox=\box43 +\@tempa=\box44 +\@tempa=\box45 +\@tempa=\box46 +\@tempa=\box47 +\@tempa=\box48 +\@tempa=\box49 +\@tempa=\box50 +\@tempa=\box51 +\@tempa=\box52 +\@tempa=\box53 +\@tempa=\box54 +\@tempa=\box55 +\@tempa=\box56 +\@tempa=\box57 +\@tempa=\box58 +\@tempa=\box59 +\@tempa=\box60 +\c@columnbadness=\count105 +\c@finalcolumnbadness=\count106 +\last@try=\dimen121 +\multicolovershoot=\dimen122 +\multicolundershoot=\dimen123 +\mult@nat@firstbox=\box61 +\colbreak@box=\box62 +\multicol@sort@counter=\count107 +) +(/usr/share/texlive/texmf-dist/tex/latex/mh/mathtools.sty +Package: mathtools 2012/04/24 v1.12 mathematical typesetting tools + +(/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +Package: calc 2007/08/22 v4.3 Infix arithmetic (KKT,FJ) +\calc@Acount=\count108 +\calc@Bcount=\count109 +\calc@Adimen=\dimen124 +\calc@Bdimen=\dimen125 +\calc@Askip=\skip63 +\calc@Bskip=\skip64 +LaTeX Info: Redefining \setlength on input line 76. +LaTeX Info: Redefining \addtolength on input line 77. +\calc@Ccount=\count110 +\calc@Cskip=\skip65 +) +(/usr/share/texlive/texmf-dist/tex/latex/mh/mhsetup.sty +Package: mhsetup 2010/01/21 v1.2a programming setup (MH) +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2000/07/18 v2.13 AMS math features +\@mathmargin=\skip66 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 +\@emptytoks=\toks17 +\ex@=\dimen126 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d +\pmbraise@=\dimen127 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 1999/12/14 v2.01 operator names +) +\inf@bad=\count111 +LaTeX Info: Redefining \frac on input line 211. +\uproot@=\count112 +\leftroot@=\count113 +LaTeX Info: Redefining \overline on input line 307. +\classnum@=\count114 +\DOTSCASE@=\count115 +LaTeX Info: Redefining \ldots on input line 379. +LaTeX Info: Redefining \dots on input line 382. +LaTeX Info: Redefining \cdots on input line 467. +\Mathstrutbox@=\box63 +\strutbox@=\box64 +\big@size=\dimen128 +LaTeX Font Info: Redeclaring font encoding OML on input line 567. +LaTeX Font Info: Redeclaring font encoding OMS on input line 568. +\macc@depth=\count116 +\c@MaxMatrixCols=\count117 +\dotsspace@=\muskip10 +\c@parentequation=\count118 +\dspbrk@lvl=\count119 +\tag@help=\toks18 +\row@=\count120 +\column@=\count121 +\maxfields@=\count122 +\andhelp@=\toks19 +\eqnshift@=\dimen129 +\alignsep@=\dimen130 +\tagshift@=\dimen131 +\tagwidth@=\dimen132 +\totwidth@=\dimen133 +\lineht@=\dimen134 +\@envbody=\toks20 +\multlinegap=\skip67 +\multlinetaggap=\skip68 +\mathdisplay@stack=\toks21 +LaTeX Info: Redefining \[ on input line 2666. +LaTeX Info: Redefining \] on input line 2667. +) +\g_MT_multlinerow_int=\count123 +\l_MT_multwidth_dim=\dimen135 +\origjot=\skip69 +\l_MT_shortvdotswithinadjustabove_dim=\dimen136 +\l_MT_shortvdotswithinadjustbelow_dim=\dimen137 +\l_MT_above_intertext_dim=\dimen138 +\l_MT_below_intertext_dim=\dimen139 +\l_MT_above_shortintertext_dim=\dimen140 +\l_MT_below_shortintertext_dim=\dimen141 +) +(/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty +Package: colortbl 2012/02/13 v1.0a Color table columns (DPC) + +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +Package: array 2008/09/09 v2.4c Tabular extension package (FMi) +\col@sep=\dimen142 +\extrarowheight=\dimen143 +\NC@list=\toks22 +\extratabsurround=\skip70 +\backup@length=\skip71 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty +Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC) + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package color Info: Driver file: pdftex.def on input line 130. +) +\everycr=\toks23 +\minrowclearance=\skip72 +) +(/usr/share/texlive/texmf-dist/tex/latex/multirow/multirow.sty +\bigstrutjot=\dimen144 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2009/06/22 v3.00 + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2009/06/22 v3.00 Basic AMSFonts support +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 96. +)) +(./elsarticle-template-num.aux) +\openout1 = `elsarticle-template-num.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 60. +LaTeX Font Info: ... okay on input line 60. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 60. +LaTeX Font Info: ... okay on input line 60. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 60. +LaTeX Font Info: ... okay on input line 60. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 60. +LaTeX Font Info: ... okay on input line 60. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 60. +LaTeX Font Info: ... okay on input line 60. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 60. +LaTeX Font Info: ... okay on input line 60. + +(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count124 +\scratchdimen=\dimen145 +\scratchbox=\box65 +\nofMPsegments=\count125 +\nofMParguments=\count126 +\everyMPshowfont=\toks24 +\MPscratchCnt=\count127 +\MPscratchDim=\dimen146 +\MPnumerator=\count128 +\makeMPintoPDFobject=\count129 +\everyMPtoPDFconversion=\toks25 +) (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +)) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +LaTeX Font Info: Try loading font information for U+msa on input line 119. + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2009/06/22 v3.00 AMS symbols A +) +LaTeX Font Info: Try loading font information for U+msb on input line 119. + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2009/06/22 v3.00 AMS symbols B +) [1 + + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] +LaTeX Font Info: Try loading font information for OMS+cmr on input line 177. + + +(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd +File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 177. + [3] [4] [5] [6] +[7] [8] [9] +File: fig21.pdf Graphic file (type pdf) + +Package pdftex.def Info: fig21.pdf used on input line 455. +(pdftex.def) Requested size: 158.99118pt x 122.85681pt. + +Overfull \hbox (35.65785pt too wide) in paragraph at lines 455--455 + [][] + [] + + +File: fig22.pdf Graphic file (type pdf) + +Package pdftex.def Info: fig22.pdf used on input line 456. +(pdftex.def) Requested size: 158.99118pt x 122.85681pt. + +Overfull \hbox (35.65785pt too wide) in paragraph at lines 455--456 + [] + [] + +Package epstopdf Info: Source file: +(epstopdf) date: 2014-03-09 13:26:30 +(epstopdf) size: 166031 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-10 11:05:44 +(epstopdf) size: 57812 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 457. +Package epstopdf Info: Output file is already uptodate. + +File: principles13-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: principles13-eps-converted-to.pdf used on input line 4 +57. +(pdftex.def) Requested size: 158.99118pt x 122.85681pt. + +Overfull \hbox (35.65785pt too wide) in paragraph at lines 456--457 + [] + [] + +Package epstopdf Info: Source file: +(epstopdf) date: 2014-03-09 13:26:30 +(epstopdf) size: 886264 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-10 11:05:45 +(epstopdf) size: 50483 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 473. +Package epstopdf Info: Output file is already uptodate. + +File: FirstModel-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: FirstModel-eps-converted-to.pdf used on input line 473 +. +(pdftex.def) Requested size: 270.30118pt x 64.79666pt. + [10 <./fig21.pdf> <./fig22.pdf + +pdfTeX warning: pdflatex (file ./fig22.pdf): PDF inclusion: multiple pdfs with +page group included in a single page +> <./principles13-eps-converted-to.pdf>] [11 <./FirstModel-eps-converted-to.pdf +>] [12] + +LaTeX Warning: Float too large for page by 85.38867pt on input line 635. + +[13] [14] [15] [16] [17] + +LaTeX Font Warning: Command \scriptsize invalid in math mode on input line 843. + + +[18] + +LaTeX Font Warning: Command \scriptsize invalid in math mode on input line 855. + + + +LaTeX Font Warning: Command \scriptsize invalid in math mode on input line 862. + + + +Underfull \hbox (badness 10000) in paragraph at lines 869--870 + + [] + + +LaTeX Font Warning: Command \scriptsize invalid in math mode on input line 871. + + +[19] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:09:27 +(epstopdf) size: 28699 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:09 +(epstopdf) size: 11075 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 909. +Package epstopdf Info: Output file is already uptodate. + +File: R1/CR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R1/CR-eps-converted-to.pdf used on input line 909. +(pdftex.def) Requested size: 211.0544pt x 149.335pt. + + +LaTeX Warning: `!h' float specifier changed to `!ht'. + +[20] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:09:03 +(epstopdf) size: 27693 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:09 +(epstopdf) size: 10662 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 929. +Package epstopdf Info: Output file is already uptodate. + +File: R1/ASR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R1/ASR-eps-converted-to.pdf used on input line 929. +(pdftex.def) Requested size: 245.41628pt x 173.64832pt. + [21 <./R1/CR-eps-converted-to.pdf> <./R1/ASR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:10:10 +(epstopdf) size: 28752 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:09 +(epstopdf) size: 10952 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 945. +Package epstopdf Info: Output file is already uptodate. + + +File: R1/ESR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R1/ESR-eps-converted-to.pdf used on input line 945. +(pdftex.def) Requested size: 245.41628pt x 173.64832pt. + [22 <./R1/ESR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-21 15:34:22 +(epstopdf) size: 28835 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-21 15:34:55 +(epstopdf) size: 10056 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 960. +Package epstopdf Info: Output file is already uptodate. + + +File: R1/SR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R1/SR-eps-converted-to.pdf used on input line 960. +(pdftex.def) Requested size: 211.0544pt x 149.335pt. +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:09:45 +(epstopdf) size: 25392 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:10 +(epstopdf) size: 8522 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 971. +Package epstopdf Info: Output file is already uptodate. + + +File: R1/EC-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R1/EC-eps-converted-to.pdf used on input line 971. +(pdftex.def) Requested size: 246.92189pt x 173.64832pt. + + +LaTeX Warning: `!h' float specifier changed to `!ht'. + +[23 <./R1/SR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:10:31 +(epstopdf) size: 25799 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:10 +(epstopdf) size: 8296 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1029. +Package epstopdf Info: Output file is already uptodate. + + +File: R1/LT-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R1/LT-eps-converted-to.pdf used on input line 1029. +(pdftex.def) Requested size: 246.92189pt x 173.64832pt. + + +LaTeX Warning: `!h' float specifier changed to `!ht'. + +[24 <./R1/EC-eps-converted-to.pdf>] [25 <./R1/LT-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:12:13 +(epstopdf) size: 27841 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:11 +(epstopdf) size: 11178 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1058. +Package epstopdf Info: Output file is already uptodate. + + +File: R2/CR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R2/CR-eps-converted-to.pdf used on input line 1058. +(pdftex.def) Requested size: 245.41628pt x 173.64832pt. + [26 <./R2/CR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:11:59 +(epstopdf) size: 27574 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:11 +(epstopdf) size: 11287 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1072. +Package epstopdf Info: Output file is already uptodate. + + +File: R2/ASR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R2/ASR-eps-converted-to.pdf used on input line 1072. +(pdftex.def) Requested size: 245.41628pt x 173.64832pt. +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:12:38 +(epstopdf) size: 27894 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:11 +(epstopdf) size: 11035 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1085. +Package epstopdf Info: Output file is already uptodate. + + +File: R2/ESR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R2/ESR-eps-converted-to.pdf used on input line 1085. +(pdftex.def) Requested size: 245.41628pt x 173.64832pt. + [27 <./R2/ASR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:13:09 +(epstopdf) size: 29283 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:12 +(epstopdf) size: 9794 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1099. +Package epstopdf Info: Output file is already uptodate. + + +File: R2/SR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R2/SR-eps-converted-to.pdf used on input line 1099. +(pdftex.def) Requested size: 245.41628pt x 173.64832pt. + [28 <./R2/ESR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:12:25 +(epstopdf) size: 24677 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:12 +(epstopdf) size: 8359 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1110. +Package epstopdf Info: Output file is already uptodate. + + +File: R2/EC-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R2/EC-eps-converted-to.pdf used on input line 1110. +(pdftex.def) Requested size: 246.92189pt x 173.64832pt. + + +LaTeX Warning: `!h' float specifier changed to `!ht'. + +[29 <./R2/SR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:13:24 +(epstopdf) size: 24072 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:34:59 +(epstopdf) size: 7489 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1123. +Package epstopdf Info: Output file is already uptodate. + + +File: R2/T-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R2/T-eps-converted-to.pdf used on input line 1123. +(pdftex.def) Requested size: 242.40503pt x 173.64832pt. + + +LaTeX Warning: `!h' float specifier changed to `!ht'. + +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-18 11:12:56 +(epstopdf) size: 24699 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-18 11:20:12 +(epstopdf) size: 7950 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1136. +Package epstopdf Info: Output file is already uptodate. + +File: R2/LT-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R2/LT-eps-converted-to.pdf used on input line 1136. +(pdftex.def) Requested size: 246.92189pt x 173.64832pt. + [30 <./R2/EC-eps-converted-to.pdf>] [31 <./R2/T-eps-converted-to.pdf> <./R2/LT +-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-21 15:17:00 +(epstopdf) size: 27589 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-21 15:18:21 +(epstopdf) size: 11392 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1158. +Package epstopdf Info: Output file is already uptodate. + + +File: R3/CR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R3/CR-eps-converted-to.pdf used on input line 1158. +(pdftex.def) Requested size: 220.87314pt x 156.28242pt. + [32 <./R3/CR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-21 15:16:21 +(epstopdf) size: 27581 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-21 15:18:22 +(epstopdf) size: 11213 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1176. +Package epstopdf Info: Output file is already uptodate. + + +File: R3/ASR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R3/ASR-eps-converted-to.pdf used on input line 1176. +(pdftex.def) Requested size: 245.41628pt x 173.64832pt. + [33 <./R3/ASR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-21 15:16:37 +(epstopdf) size: 27608 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-21 15:18:22 +(epstopdf) size: 11102 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1188. +Package epstopdf Info: Output file is already uptodate. + + +File: R3/ESR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R3/ESR-eps-converted-to.pdf used on input line 1188. +(pdftex.def) Requested size: 245.41628pt x 173.64832pt. + [34 <./R3/ESR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-21 15:17:29 +(epstopdf) size: 25713 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-21 15:18:22 +(epstopdf) size: 9503 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1205. +Package epstopdf Info: Output file is already uptodate. + + +File: R3/SR-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R3/SR-eps-converted-to.pdf used on input line 1205. +(pdftex.def) Requested size: 196.33002pt x 138.91653pt. + [35 <./R3/SR-eps-converted-to.pdf>] +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-21 15:16:49 +(epstopdf) size: 23655 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-21 15:18:23 +(epstopdf) size: 8131 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1216. +Package epstopdf Info: Output file is already uptodate. + + +File: R3/EC-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R3/EC-eps-converted-to.pdf used on input line 1216. +(pdftex.def) Requested size: 246.92189pt x 173.64832pt. +Package epstopdf Info: Source file: +(epstopdf) date: 2014-04-21 15:17:18 +(epstopdf) size: 25178 bytes +(epstopdf) Output file: +(epstopdf) date: 2014-04-21 15:18:23 +(epstopdf) size: 8306 bytes +(epstopdf) Command: +(epstopdf) \includegraphics on input line 1227. +Package epstopdf Info: Output file is already uptodate. + + +File: R3/LT-eps-converted-to.pdf Graphic file (type pdf) + + +Package pdftex.def Info: R3/LT-eps-converted-to.pdf used on input line 1227. +(pdftex.def) Requested size: 246.92189pt x 173.64832pt. + [36 <./R3/EC-eps-converted-to.pdf>] [37 <./R3/LT-eps-converted-to.pdf>] (./els +article-template-num.bbl [38] [39] +Underfull \hbox (badness 2197) in paragraph at lines 102--105 +[]\OT1/cmr/m/n/12 W. B. Heinzel-man, A. P. Chan-drakasan, H. Bal-akr-ish-nan, A +n + [] + +[40] +Underfull \hbox (badness 10000) in paragraph at lines 127--132 +[]\OT1/cmr/m/n/12 C. Vu, S. Gao, W. Desh-mukh, Y. Li, Dis-tributed + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 127--132 +\OT1/cmr/m/n/12 energy-efficient schedul-ing ap-proach for k-coverage in + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 127--132 +\OT1/cmr/m/n/12 wire-less sen-sor net-works, MIL-COM 0 (2006) 1--7. + [] + +[41] +Underfull \hbox (badness 1199) in paragraph at lines 201--206 +[]\OT1/cmr/m/n/12 S. He, X. Gong, J. Zhang, J. Chen, Y. Sun, Curve-based de- + [] + + +Underfull \hbox (badness 1184) in paragraph at lines 201--206 +\OT1/cmr/m/n/12 ploy-ment for bar-rier cov-er-age in wire-less sen-sor net-work +s, Wire- + [] + +[42]) [43] (./elsarticle-template-num.aux) ) +Here is how much of TeX's memory you used: + 5183 strings out of 495059 + 71534 string characters out of 3182030 + 158876 words of memory out of 3000000 + 8254 multiletter control sequences out of 15000+200000 + 12282 words of font info for 47 fonts, out of 3000000 for 9000 + 14 hyphenation exceptions out of 8191 + 38i,27n,30p,1256b,611s stack positions out of 5000i,500n,10000p,200000b,50000s + +Output written on elsarticle-template-num.pdf (43 pages, 621944 bytes). +PDF statistics: + 396 PDF objects out of 1000 (max. 8388607) + 254 compressed objects within 3 object streams + 0 named destinations out of 1000 (max. 500000) + 116 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/elsarticle-template-num.spl b/elsarticle-template-num.spl new file mode 100644 index 0000000..e69de29 diff --git a/elsarticle-template-num.synctex.gz b/elsarticle-template-num.synctex.gz new file mode 100644 index 0000000..604dd8b Binary files /dev/null and b/elsarticle-template-num.synctex.gz differ diff --git a/elsarticle-template-num.tex b/elsarticle-template-num.tex new file mode 100644 index 0000000..6f0b38f --- /dev/null +++ b/elsarticle-template-num.tex @@ -0,0 +1,1318 @@ +%% +%% Copyright 2007, 2008, 2009 Elsevier Ltd +%% +%% This file is part of the 'Elsarticle Bundle'. +%% --------------------------------------------- +%% +%% It may be distributed under the conditions of the LaTeX Project Public +%% License, either version 1.2 of this license or (at your option) any +%% later version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% The list of all files belonging to the 'Elsarticle Bundle' is +%% given in the file `manifest.txt'. +%% + +%% Template article for Elsevier's document class `elsarticle' +%% with numbered style bibliographic references +%% SP 2008/03/01 + +\documentclass[preprint,12pt]{elsarticle} + + +\usepackage[linesnumbered,ruled,vlined,commentsnumbered]{algorithm2e} +\usepackage{multicol} +\usepackage{mathtools} + + +\usepackage{colortbl} +\usepackage{multirow} +%% Use the option review to obtain double line spacing +%% \documentclass[authoryear,preprint,review,12pt]{elsarticle} + +%% Use the options 1p,twocolumn; 3p; 3p,twocolumn; 5p; or 5p,twocolumn +%% for a journal layout: +%% \documentclass[final,1p,times]{elsarticle} +%% \documentclass[final,1p,times,twocolumn]{elsarticle} +%% \documentclass[final,3p,times]{elsarticle} +%% \documentclass[final,3p,times,twocolumn]{elsarticle} +%% \documentclass[final,5p,times]{elsarticle} +%% \documentclass[final,5p,times,twocolumn]{elsarticle} + +%% For including figures, graphicx.sty has been loaded in +%% elsarticle.cls. If you prefer to use the old commands +%% please give \usepackage{epsfig} + +%% The amssymb package provides various useful mathematical symbols +\usepackage{amssymb} +%% The amsthm package provides extended theorem environments +%% \usepackage{amsthm} + +%% The lineno packages adds line numbers. Start line numbering with +%% \begin{linenumbers}, end it with \end{linenumbers}. Or switch it on +%% for the whole article with \linenumbers. +%% \usepackage{lineno} + +\journal{Ad Hoc Networks} + +\begin{document} + +\begin{frontmatter} + +%% Title, authors and addresses + +%% use the tnoteref command within \title for footnotes; +%% use the tnotetext command for theassociated footnote; +%% use the fnref command within \author or \address for footnotes; +%% use the fntext command for theassociated footnote; +%% use the corref command within \author for corresponding author footnotes; +%% use the cortext command for theassociated footnote; +%% use the ead command for the email address, +%% and the form \ead[url] for the home page: +%% \title{Title\tnoteref{label1}} +%% \tnotetext[label1]{} +%% \author{Name\corref{cor1}\fnref{label2}} +%% \ead{email address} +%% \ead[url]{home page} +%% \fntext[label2]{} +%% \cortext[cor1]{} +%% \address{Address\fnref{label3}} +%% \fntext[label3]{} + +\title{Distributed Lifetime Coverage Optimization Protocol in Wireless Sensor Networks} + +%% use optional labels to link authors explicitly to addresses: +%% \author[label1,label2]{} +%% \address[label1]{} +%% \address[label2]{} +\author{Ali Kadhum Idrees, Karine Deschinkel, Michel Salomon, and Rapha\"el Couturier} +%\thanks{are members in the AND team - DISC department - FEMTO-ST Institute, University of Franche-Comt\'e, Belfort, France. +% e-mail: ali.idness@edu.univ-fcomte.fr, $\lbrace$karine.deschinkel, michel.salomon, raphael.couturier$\rbrace$@univ-fcomte.fr.}% <-this % stops a space +%\thanks{}% <-this % stops a space + + +\address{FEMTO-ST Institute, University of Franche-Comt\'e, Belfort, France. \\ e-mail: ali.idness@edu.univ-fcomte.fr, $\lbrace$karine.deschinkel, michel.salomon, raphael.couturier$\rbrace$@univ-fcomte.fr.} + +\begin{abstract} +One of the fundamental challenges in Wireless Sensor Networks (WSNs) +is the coverage preservation and the extension of the network lifetime +continuously and effectively when monitoring a certain area (or +region) of interest. In this paper, a Distributed Lifetime Coverage Optimization Protocol (DiLCO) +to maintain the coverage and to improve the lifetime in wireless sensor networks is proposed. The area of interest is first divided into subregions using a divide-and-conquer method and then the DiLCO protocol is distributed on the sensor nodes in each subregion. The DiLCO combines two efficient techniques: Leader election for each subregion after that activity scheduling based optimization is planned for each subregion. The proposed +DiLCO works into rounds during which a small number of nodes, +remaining active for sensing, is selected to ensure coverage so as to maximize the lifetime of wireless sensor network. Each round consists of four phases: (i)~Information Exchange, (ii)~Leader +Election, (iii)~Decision, and (iv)~Sensing. The decision process is +carried out by a leader node, which solves an integer program. Compared with some existing +protocols, simulation results show that the proposed protocol can prolong the +network lifetime and improve the coverage performance effectively. + +\end{abstract} + +\begin{keyword} +Wireless Sensor Networks, Area Coverage, Network lifetime, +Optimization, Scheduling. + +\end{keyword} + +\end{frontmatter} + +\section{Introduction} + +\indent The fast developments in the low-cost sensor devices and +wireless communications have allowed the emergence the WSNs. WSN +includes a large number of small, limited-power sensors that can +sense, process and transmit data over a wireless communication. They +communicate with each other by using multi-hop wireless communications, cooperate together to monitor the area of interest, +and the measured data can be reported to a monitoring center called sink +for analysis it~\cite{Sudip03}. There are several applications used the +WSN including health, home, environmental, military, and industrial +applications~\cite{Akyildiz02}. One of the major scientific research challenges in WSNs, which are addressed by a large number of literature during the last few years is to design energy efficient approches for coverage and connectivity in WSNs~\cite{conti2014mobile}. The coverage problem is one of the +fundamental challenges in WSNs~\cite{Nayak04} that consists in monitoring efficiently and continuously +the area of interest. Thelimited energy of sensors represents the main challenge in the WSNs +design~\cite{Sudip03}, where it is difficult to replace and/or recharge their batteries because the the area of interest nature (such +as hostile environments) and the cost. So, it is necessary that a WSN +deployed with high density because spatial redundancy can then be +exploited to increase the lifetime of the network. However, turn on +all the sensor nodes, which monitor the same region at the same time +leads to decrease the lifetime of the network. To extend the lifetime +of the network, the main idea is to take advantage of the overlapping +sensing regions of some sensor nodes to save energy by turning off +some of them during the sensing phase~\cite{Misra05}. WSNs require +energy-efficient solutions to improve the network lifetime that is +constrained by the limited power of each sensor node ~\cite{Akyildiz02}. In this paper, we concentrate on the area +coverage problem, with the objective of maximizing the network +lifetime by using an adaptive scheduling. The area of interest is +divided into subregions and an activity scheduling for sensor nodes is +planned for each subregion. In fact, the nodes in a subregion can be +seen as a cluster where each node sends sensing data to the cluster head or the sink node. Furthermore, the activities in a +subregion/cluster can continue even if another cluster stops due to +too many node failures. Our scheduling scheme considers rounds, where +a round starts with a discovery phase to exchange information between +sensors of the subregion, in order to choose in a suitable manner a +sensor node to carry out a coverage strategy. This coverage strategy +involves the solving of an integer program, which provides the +activation of the sensors for the sensing phase of the current round. + +The remainder of the paper is organized as follows. The next section +% Section~\ref{rw} +reviews the related work in the field. In section~\ref{Pr}, the problem definition and some background are described. Section~\ref{pd} is devoted to +the DiLCO Protocol Description. Section~\ref{cp} gives the coverage model formulation, which is used +to schedule the activation of sensors. Section~\ref{exp} shows the +simulation results obtained using the discrete event simulator OMNeT++ +\cite{varga}. They fully demonstrate the usefulness of the proposed +approach. Finally, we give concluding remarks and some suggestions +for future works in Section~\ref{sec:conclusion}. + + +\section{Related works} +\label{rw} + +\indent This section is dedicated to the various approaches proposed +in the literature for the coverage lifetime maximization problem, +where the objective is to optimally schedule sensors' activities in +order to extend network lifetime in WSNs. Cardei and Wu \cite{cardei2006energy} provide a taxonomy for coverage algorithms in WSNs according to several design choices: +\begin{itemize} +\item Sensors scheduling Algorithms, i.e. centralized or distributed/localized algorithms. +\item The objective of sensor coverage, i.e. to maximize the network lifetime +or to minimize the number of sensors during the sensing period. +\item The homogeneous or heterogeneous nature of the +nodes, in terms of sensing or communication capabilities. +\item The node deployment method, which may be random or deterministic. +\item Additional requirements for energy-efficient +coverage and connected coverage. +\end{itemize} + + The independency in the cover set (i.e. whether the cover sets are disjoint or non-disjoint) \cite{zorbas2010solving} is another design choice that can be added to the above +list. + +\subsection{Centralized Approaches} +%{\bf Centralized approaches} +The major approach is +to divide/organize the sensors into a suitable number of set covers +where each set completely covers an interest region and to activate +these set covers successively. The centralized algorithms always provide nearly or close to optimal solution since the algorithm has global view of the whole network. However, its advantage of +this type of algorithms is that it requires very low processing power from the sensor nodes, which usually have +limited processing capabilities where the schdule of selected sensor nodes will be computed on the base stations and then sent it to the sensor nodes to apply it to monitor the area of interest. + +The first algorithms proposed in the literature consider that the cover +sets are disjoint: a sensor node appears in exactly one of the +generated cover sets. For instance, Slijepcevic and Potkonjak +\cite{Slijepcevic01powerefficient} propose an algorithm, which +allocates sensor nodes in mutually independent sets to monitor an area +divided into several fields. Their algorithm builds a cover set by +including in priority the sensor nodes, which cover critical fields, +that is to say fields that are covered by the smallest number of +sensors. The time complexity of their heuristic is $O(n^2)$ where $n$ +is the number of sensors. Abrams et al.~\cite{abrams2004set} design three approximation +algorithms for a variation of the set k-cover problem, where the +objective is to partition the sensors into covers such that the number +of covers that includes an area, summed over all areas, is maximized. +Their work builds upon previous work +in~\cite{Slijepcevic01powerefficient} and the generated cover sets do +not provide complete coverage of the monitoring zone. +\cite{cardei2005improving} propose a method to efficiently +compute the maximum number of disjoint set covers such that each set +can monitor all targets. They first transform the problem into a +maximum flow problem, which is formulated as a mixed integer +programming (MIP). Then their heuristic uses the output of the MIP to +compute disjoint set covers. Results show that this heuristic +provides a number of set covers slightly larger compared to +\cite{Slijepcevic01powerefficient} but with a larger execution time +due to the complexity of the mixed integer programming resolution. + +Zorbas et al. \cite{zorbas2010solving} presented a centralised greedy +algorithm for the efficient production of both node disjoint +and non-disjoint cover sets. Compared to algorithm's results of Slijepcevic and Potkonjak +\cite{Slijepcevic01powerefficient}, their heuristic produces more +disjoint cover sets with a slight growth rate in execution time. When producing non-disjoint cover sets, both Static-CCF and Dynamic-CCF provide cover sets offering longer network lifetime than those produced by +\cite{cardei2005energy}. Also, they require a smaller number of node participations in order to +achieve these results. + +In the case of non-disjoint algorithms \cite{pujari2011high}, sensors may +participate in more than one cover set. In some cases, this may +prolong the lifetime of the network in comparison to the disjoint +cover set algorithms, but designing algorithms for non-disjoint cover +sets generally induces a higher order of complexity. Moreover, in +case of a sensor's failure, non-disjoint scheduling policies are less +resilient and less reliable because a sensor may be involved in more +than one cover sets. For instance, Cardei et al.~\cite{cardei2005energy} +present a linear programming (LP) solution and a greedy approach to +extend the sensor network lifetime by organizing the sensors into a +maximal number of non-disjoint cover sets. Simulation results show +that by allowing sensors to participate in multiple sets, the network +lifetime increases compared with related +work~\cite{cardei2005improving}. In~\cite{berman04}, the +authors have formulated the lifetime problem and suggested another +(LP) technique to solve this problem. A centralized solution based on the Garg-K\"{o}nemann +algorithm~\cite{garg98}, provably near +the optimal solution, is also proposed. + +\subsection{Distributed approaches} +%{\bf Distributed approaches} +In distributed $\&$ localized coverage algorithms, the required computation to schedule the activity of sensor nodes will be done by the cooperation among the neighbours nodes. These algorithms may require more computation power for the processing by the cooperated sensor nodes but they are more scaleable for large WSNs. Normally, the localized and distributed algorithms result in non-disjoint set covers. + +Some distributed algorithms have been developed +in~\cite{Gallais06,Tian02,Ye03,Zhang05,HeinzelmanCB02, yardibi2010distributed} to perform the +scheduling so as to coverage preservation. Distributed algorithms typically operate in rounds for +a predetermined duration. At the beginning of each round, a sensor +exchanges information with its neighbors and makes a decision to either +remain turned on or to go to sleep for the round. This decision is +basically made on simple greedy criteria like the largest uncovered +area \cite{Berman05efficientenergy}, maximum uncovered targets +\cite{lu2003coverage}. In \cite{Tian02}, the scheduling scheme is divided +into rounds, where each round has a self-scheduling phase followed by +a sensing phase. Each sensor broadcasts a message containing the node ID +and the node location to its neighbors at the beginning of each round. A +sensor determines its status by a rule named off-duty eligible rule, +which tells him to turn off if its sensing area is covered by its +neighbors. A back-off scheme is introduced to let each sensor delay +the decision process with a random period of time, in order to avoid +simultaneous conflicting decisions between nodes and lack of coverage on any area. +\cite{prasad2007distributed} defines a model for capturing +the dependencies between different cover sets and proposes localized +heuristic based on this dependency. The algorithm consists of two +phases, an initial setup phase during which each sensor computes and +prioritizes the covers and a sensing phase during which each sensor +first decides its on/off status, and then remains on or off for the +rest of the duration. + +The authors in \cite{yardibi2010distributed}, are developed a distributed adaptive sleep scheduling algorithm (DASSA) for WSNs with partial coverage. DASSA does not require location information of sensors while maintaining connectivity and satisfying a user defined coverage target. In DASSA, nodes use the residual energy levels and feedback from the sink for scheduling the activity of their neighbors. This feedback mechanism reduces the randomness in scheduling that would otherwise occur due to the absence of location information. + +In \cite{ChinhVu}, the author proposed a novel distributed heuristic, called +Distributed Energy-efficient Scheduling for k-coverage (DESK), which +ensures that the energy consumption among the sensors is balanced and +the lifetime maximized while the coverage requirement is maintained. +This heuristic works in rounds, requires only 1-hop neighbor +information, and each sensor decides its status (active or sleep) +based on the perimeter coverage model proposed in +\cite{Huang:2003:CPW:941350.941367}. +Our Work, which is presented in~\cite{idrees2014coverage} proposed a coverage optimization protocol to improve the lifetime in +heterogeneous energy wireless sensor networks. In this work, the coverage protocol distributed in each sensor node in the subregion but the optimization take place over the the whole subregion. We consider only distributing the coverage protocol over two subregions. + +The works presented in \cite{Bang, Zhixin, Zhang} focuses on a Coverage-Aware, Distributed Energy- Efficient and distributed clustering methods respectively, which aims to extend the network lifetime, while the coverage is ensured. +S. Misra et al. \cite{Misra} proposed a localized algorithm for +coverage in sensor networks. The algorithm conserve the energy while +ensuring the network coverage by activating the subset of sensors, +with the minimum overlap area.The proposed method preserves the +network connectivity by formation of the network backbone. +More recently, Shibo et +al. \cite{Shibo} expressed the coverage problem as a minimum weight +submodular set cover problem and proposed a Distributed Truncated +Greedy Algorithm (DTGA) to solve it. They take advantage from both +temporal and spatial correlations between data sensed by different +sensors, and leverage prediction, to improve the lifetime. + +In \cite{xu2001geography}, Xu et al. proposed an algorithm, called Geographical Adaptive Fidelity (GAF), which uses geographic location information to divide the area of interest into fixed square grids. Within each grid, it keeps only one node staying awake to take the responsibility of sensing and communication. + +Some other approaches do not consider a synchronized and predetermined +period of time where the sensors are active or not. Indeed, each +sensor maintains its own timer and its wake-up time is randomized +\cite{Ye03} or regulated \cite{cardei2005maximum} over time. + +The main contributions of our DiLCO Protocol can be summarized as follows: +(1) The high coverage ratio, (2) The reduced number of active nodes, (3) The distributed optimization over the subregions in the area of interest, (4) The distributed dynamic leader election at each round based on some priority factors that led to energy consumption balancing among the nodes in the same subregion, (5) The primary point coverage model to represent each sensor node in the network, (6) The activity scheduling based optimization on the subregion, which are based on the primary point coverage model to activate as less number as possible of sensor nodes to take the mission of the coverage in each subregion, (7) The very low energy consumption, (8) The higher network lifetime. +\section{Preliminaries} +\label{Pr} + +\subsection{Coverage Problem} +The most discussed coverage problems in literature can be classified +into three types \cite{ghosh2008coverage}\cite{wang2011coverage}: area coverage \cite{mulligan2010coverage}(also called full or blanket +coverage), target coverage \cite{yang2014novel}, and barrier coverage \cite{HeShibo}. An area coverage problem is to find a minimum number of sensors to work, such that each physical point in the area is within the sensing range of at least one working sensor node. +Target coverage problem is to cover only a finite number of discrete +points called targets. This type of coverage has mainly military +applications. The problem of preventing an intruder from entering a region of interest is referred to as the barrier coverage . Our work will concentrate on the area coverage by design +and implementation of a strategy, which efficiently selects the active +nodes that must maintain both sensing coverage and network +connectivity and at the same time improve the lifetime of the wireless +sensor network. But, requiring that all physical points of the +considered region are covered may be too strict, especially where the +sensor network is not dense. Our approach represents an area covered +by a sensor as a set of primary points and tries to maximize the total +number of primary points that are covered in each round, while +minimizing overcoverage (points covered by multiple active sensors +simultaneously). + + +\subsection{Network Lifetime} +Various definitions exist for the lifetime of a sensor +network~\cite{die09}. The main definitions proposed in the literature are +related to the remaining energy of the nodes or to the coverage percentage. +The lifetime of the network is mainly defined as the amount +of time during which the network can satisfy its coverage objective (the +amount of time that the network can cover a given percentage of its +area or targets of interest). In this work, we assume that the network +is alive until all nodes have been drained of their energy or the +sensor network becomes disconnected, and we measure the coverage ratio +during the WSN lifetime. Network connectivity is important because an +active sensor node without connectivity towards a base station cannot +transmit information on an event in the area that it monitors. + +\subsection{Activity Scheduling } +Activity scheduling is to schedule the activation and deac- +tivation of sensor nodes. The basic objective is to decide which +sensors are in what states (active or sleeping mode) and for +how long, so that the application coverage requirement can be +guaranteed and the network lifetime can be prolonged. Various +approaches, including centralized, distributed, and localized +algorithms, have been proposed for activity scheduling. In +distributed algorithms, each node in the network autonomously +makes decisions on whether to turn on or turn off itself only +using local neighbor information. In centralized algorithms, a +central controller (a node or base station) informs every sensors +of the time intervals to be activated. There are many sensor node scheduling methods are proposed in \cite{wang2010clique}, where they are grouped into two main categories:round-based sensor node scheduling in which, sensor nodes will execute the scheduling +algorithm during the initialization of each round and group-based sensor node scheduling in which, each node will performs the scheduling algorithm only once after its deployment and after +the execution of scheduling algorithm, all nodes will be allocated into different groups. + + + +\section{ The DiLCO Protocol Description} +\label{pd} + +In this section, we introduce a Distributed Lifetime Coverage Optimization protocol, which is called DiLCO. It is distributed on each subregion in the area of interest. It is based on two efficient techniques: network +leader election and sensor activity scheduling for coverage preservation and energy conservation continuously and efficiently to maximize the lifetime in the network. +The main features of our DiLCO protocol: +i)It divides the area of interest into subregions by using divide-and-conquer concept, ii)It requires only the information of the nodes within the subregion, iii) it divides the network lifetime into rounds, iv)It based on the autonomous distributed decision by the nodes in the subregion to elect the Leader, v)It apply the activity scheduling based optimization on the subregion, vi) it achieves an energy consumption balancing among the nodes in the subregion by selecting different nodes as a leader during the network lifetime, vii) It uses the optimization to select the best representative set of sensors in the subregion by optimize the coverage and the lifetime over the area of interest, viii)It uses our proposed primary point coverage model, which represent the sensing range of the sensor as a set of points, which are used by the our optimization algorithm, ix) It uses a simple energy model that takes communication, sensing and computation energy consumptions into account to evaluate the performance of our Protocol. + + +\subsection{ Assumptions and Models} +We consider a randomly and uniformly deployed network consisting of +static wireless sensors. The wireless sensors are deployed in high +density to ensure initially a high coverage ratio of the interested area. We +assume that all nodes are homogeneous in terms of communication and +processing capabilities and heterogeneous in term of energy provision. +The location information is available to the sensor node either +through hardware such as embedded GPS or through location discovery +algorithms. +\indent We consider a boolean disk coverage model which is the most +widely used sensor coverage model in the literature. Each sensor has a +constant sensing range $R_s$. All space points within a disk centered +at the sensor with the radius of the sensing range is said to be +covered by this sensor. We also assume that the communication range $R_c \geq 2R_s$. +In fact, Zhang and Zhou~\cite{Zhang05} proved that if the transmission range fulfills the +previous hypothesis, a complete coverage of a convex area implies +connectivity among the working nodes in the active mode. + + + +%\begin{figure}[h!] +%\centering +%\begin{tabular}{cc} +%%\includegraphics[scale=0.25]{fig1.pdf}\\ %& \includegraphics[scale=0.10]{1.pdf} \\ +%%(A) Figure 1 & (B) Figure 2 +%\end{tabular} +%\caption{Unit Circle in radians. } +%\label{fig:cluster1} +%\end{figure} + +%By using the Unit Circle in figure~\ref{fig:cluster1}, +%We choose to representEach wireless sensor node will be represented into a selected number of primary points by which we can know if the sensor node is covered or not. +% Figure ~\ref{fig:cluster2} shows the selected primary points that represents the area of the sensor node and according to the sensing range of the wireless sensor node. + +\indent Instead of working with the coverage area, we consider for each +sensor a set of points called primary points. We also assume that the +sensing disk defined by a sensor is covered if all the primary points of +this sensor are covered. +%\begin{figure}[h!] +%\centering +%\begin{tabular}{cc} +%%\includegraphics[scale=0.25]{fig2.pdf}\\ %& \includegraphics[scale=0.10]{1.pdf} \\ +%%(A) Figure 1 & (B) Figure 2 +%\end{tabular} +%\caption{Wireless Sensor Node Area Coverage Model.} +%\label{fig:cluster2} +%\end{figure} +By knowing the position (point center: ($p_x,p_y$)) of a wireless +sensor node and its $R_s$, we calculate the primary points directly +based on the proposed model. We use these primary points (that can be +increased or decreased if necessary) as references to ensure that the +monitored region of interest is covered by the selected set of +sensors, instead of using all the points in the area. + +\indent We can calculate the positions of the selected primary +points in the circle disk of the sensing range of a wireless sensor +node (see figure~\ref{fig1}) as follows:\\ +$(p_x,p_y)$ = point center of wireless sensor node\\ +$X_1=(p_x,p_y)$ \\ +$X_2=( p_x + R_s * (1), p_y + R_s * (0) )$\\ +$X_3=( p_x + R_s * (-1), p_y + R_s * (0)) $\\ +$X_4=( p_x + R_s * (0), p_y + R_s * (1) )$\\ +$X_5=( p_x + R_s * (0), p_y + R_s * (-1 )) $\\ +$X_6= ( p_x + R_s * (\frac{-\sqrt{2}}{2}), p_y + R_s * (0)) $\\ +$X_7=( p_x + R_s * (\frac{\sqrt{2}}{2}), p_y + R_s * (0))$\\ +$X_8=( p_x + R_s * (\frac{-\sqrt{2}}{2}), p_y + R_s * (\frac{-\sqrt{2}}{2})) $\\ +$X_9=( p_x + R_s * (\frac{\sqrt{2}}{2}), p_y + R_s * (\frac{-\sqrt{2}}{2})) $\\ +$X_{10}=( p_x + R_s * (\frac{-\sqrt{2}}{2}), p_y + R_s * (\frac{\sqrt{2}}{2})) $\\ +$X_{11}=( p_x + R_s * (\frac{\sqrt{2}}{2}), p_y + R_s * (\frac{\sqrt{2}}{2})) $\\ +$X_{12}=( p_x + R_s * (0), p_y + R_s * (\frac{\sqrt{2}}{2})) $\\ +$X_{13}=( p_x + R_s * (0), p_y + R_s * (\frac{-\sqrt{2}}{2})) $. + + \begin{figure}[h!] +\centering + \begin{multicols}{3} +\centering +\includegraphics[scale=0.20]{fig21.pdf}\\~ ~ ~ ~ ~(a) +\includegraphics[scale=0.20]{fig22.pdf}\\~ ~ ~ ~ ~(b) +\includegraphics[scale=0.20]{principles13.eps}\\~ ~ ~ ~ ~(c) +%\includegraphics[scale=0.10]{fig25.pdf}\\~ ~ ~(d) +%\includegraphics[scale=0.10]{fig26.pdf}\\~ ~ ~(e) +%\includegraphics[scale=0.10]{fig27.pdf}\\~ ~ ~(f) +\end{multicols} +\caption{Wireless Sensor Node represented by (a)5, (b)9 and (c)13 primary points respectively} +\label{fig1} +\end{figure} + +\subsection{The Main Idea} +The area of interest can be divided using the +divide-and-conquer strategy into smaller areas called subregions and +then our coverage protocol will be implemented in each subregion +simultaneously. Our DiLCO protocol works in rounds fashion as shown in figure~\ref{fig2}. +\begin{figure}[ht!] +\centering +\includegraphics[width=95mm]{FirstModel.eps} % 70mm +\caption{DiLCO protocol} +\label{fig2} +\end{figure} + +Each round is divided into 4 phases : Information (INFO) Exchange, +Leader Election, Decision, and Sensing. For each round there is +exactly one set cover responsible for the sensing task. This protocol is +more reliable against an unexpected node failure because it works +in rounds. On the one hand, if a node failure is detected before +making the decision, the node will not participate to this phase, and, +on the other hand, if the node failure occurs after the decision, the +sensing task of the network will be temporarily affected: only during +the period of sensing until a new round starts, since a new set cover +will take charge of the sensing task in the next round. The energy +consumption and some other constraints can easily be taken into +account since the sensors can update and then exchange their +information (including their residual energy) at the beginning of each +round. However, the pre-sensing phases (INFO Exchange, Leader +Election, Decision) are energy consuming for some nodes, even when +they do not join the network to monitor the area. +We define two types of packets to be used by our DiLCO protocol. +\begin{enumerate}[(a)] +\item INFO packet: sent by each sensor node to all the nodes of it's subregion for information exchange. +\item ActiveSleep packet: sent by the leader to all the nodes in the same of it's subregion to inform them to be Active or Sleep during the sensing phase. +\end{enumerate} + +There are four status for each sensor node in the network +\begin{enumerate}[(a)] +\item LISTENING: Sensor has not yet decided. +\item ACTIVE: Sensor is active. +\item SLEEP: Sensor decides to turn off. +\item COMMUNICATION: Sensor is Transmitting or Receiving packet. +\end{enumerate} + +Below, we describe each phase in more details. + +\subsubsection{Information Exchange Phase} + +Each sensor node $j$ sends its position, remaining energy $RE_j$, and +the number of neighbours $NBR_j$ to all wireless sensor nodes in +its subregion by using an INFO packet and then listens to the packets +sent from other nodes. After that, each node will have information +about all the sensor nodes in the subregion. In our model, the +remaining energy corresponds to the time that a sensor can live in the +active mode. + +%\subsection{\textbf Working Phase:} + +%The working phase works in rounding fashion. Each round include 3 steps described as follow : + +\subsubsection{Leader Election Phase} +This step includes choosing the Wireless Sensor Node Leader (WSNL), +which will be responsible for executing the coverage algorithm. Each +subregion in the area of interest will select its own WSNL +independently for each round. All the sensor nodes cooperate to +select WSNL. The nodes in the same subregion will select the leader +based on the received information from all other nodes in the same +subregion. The selection criteria in order of priority are: larger +number of neighbours, larger remaining energy, and then in case of +equality, larger index. The pseudo-code for leader election phase is provided in Algorithm~1. +\begin{algorithm} + \KwIn{all the parameters related to information exchange} + \KwOut{$node-id$ (: the id of the winner sensor node, which is the leader of current round)} + \BlankLine + \emph{Select the node(s) with higher $NBR_j$ and $ RE_j \geqslant E_{th}$} \; + + \If{ there are more than two nodes with the same maximum $NBR_j$ }{ + \If{ there are more than two nodes with the same maximum $NBR_j$ and the same $RE_j$}{ + \emph{ Select the node with higher id} \; + } + \Else{ + \emph{Select the node with maximum $RE_j$} \; + } + } + \Else{ + \emph{ Select the node with higher $NBR_j$ } \; + } + + \emph{return node-id} \; +\caption{LEADER ELECTION} +\label{alg:LEADER} + +\end{algorithm} + +Where $E_{th}$ is the minimum energy needed to stay active during the sensing phase. As shown in Algorithm~1, the more priority selection factor is the number of $1-hop$ neighbours, $NBR j$, which can minimize the energy consumption during the communication Significantly. + + +\subsubsection{Decision phase} +The WSNL will solve an integer program (see section~\ref{cp}) to +select which sensors will be activated in the following sensing phase +to cover the subregion. WSNL will send Active-Sleep packet to each +sensor in the subregion based on the algorithm's results. + + +\subsubsection{Sensing phase} +Active sensors in the round will execute their sensing task to +preserve maximal coverage in the region of interest. We will assume +that the cost of keeping a node awake (or asleep) for sensing task is +the same for all wireless sensor nodes in the network. Each sensor +will receive an Active-Sleep packet from WSNL informing it to stay +awake or to go to sleep for a time equal to the period of sensing until +starting a new round. + +\subsection{DiLCO protocol Algorithm} +we first show the pseudo-code of DiLCO protocol, which is executed by each sensor in the subregion and then describe it in more detail. + +\begin{algorithm} + % \KwIn{all the parameters related to information exchange} +% \KwOut{$winer-node$ (: the id of the winner sensor node, which is the leader of current round)} + \BlankLine + \emph{Initialize the sensor node and determine it's position and it's subregion} \; + + \If{ $RE_j \geq E_{th}$ }{ + \emph{ Send and Receive INFO Packet to and from other nodes in the subregion}\; + \emph{ Collect information and construct the list L for all nodes in the subregion}\; + \emph{ $s_j.status$ = LISTENING}\; + \If{ the received INFO Packet = No. of nodes in it's subregion -1 }{ + \emph{ LeaderID $\leftarrow$ \bf Algorithm~\ref{alg:LEADER}}\; + \If{ $ s_j.ID = LeaderID $}{ + \emph{Execute Integer Program Algorithm (Gbest) }\; + \For{$k\leftarrow 1$ \KwTo No. of nodes in subregion}{ + \If{$ s_j.ID \neq L_k$ }{ + \If{$ Gbest_k = 1$ }{ + \emph{ Send ActiveSleep() Packet with status = ACTIVE }\; + } + \Else{\emph{Send ActiveSleep() Packet with status = SLEEP}\;} + } + \Else{ + \If{$ Gbest_k = 1$ }{ + \emph{ $s_j.status$ = ACTIVE}\; + \emph{UPDATE Remaining Energy $RE_j $}\; + } + \Else{ + \emph{ $s_j.status$ = SLEEP}\; + \emph{UPDATE Remaining Energy $RE_j $}\; + } + } + + } + + } + \Else{ + \emph{Wait ActiveSleep() Packet from the Leader}\; + \If{received ActiveSleep().status = ACTIVE }{ + \emph{ $s_j.status$ = ACTIVE}\; + \emph{UPDATE Remaining Energy $RE_j $}\; + } + \Else{ + \emph{ $s_j.status$ = SLEEP}\; + \emph{UPDATE Remaining Energy $RE_j $}\; + } + } + } + + } + \Else { Exclude me from entering in the current round} + + % \emph{return X} \; +\caption{DiLCO($s_j$)} +\label{alg:DMRCLOP} + +\end{algorithm} + +The DiLCO protocol work in rounds and executed at each sensor node in the network , each sensor node can still sense data while being in +LISTENING mode. Thus, by entering the LISTENING mode at the beginning of each round, +sensor nodes still executing sensing task while participating in the leader election and decision phases. More specifically, The DiLCO protocol algorithm works as follow: +Initially, the sensor node check it's remaining energy in order to participate in the current round. Each sensor node determines it's position and it's subregion based Embedded GPS or Location Discovery Algorithm. After that, All the sensors collect position coordinates, current remaining energy, sensor node id, and the number of its one-hop live neighbors during the information exchange. It stores this information into a list L. +The sensor node enter in listening mode waiting to receive ActiveSleep packet from the leader to take the decision. Each sensor node will execute the Algorithm~1 to know who is the leader. After that, if the sensor node is leader, It will execute the integer program algorithm ( see section~\ref{cp}) to optimize the coverage and the lifetime in it's subregion. After the decision, the optimization approach will select the set of sensor nodes to take the mission of coverage during the sensing phase. The leader will send ActiveSleep packet to each sensor node in the subregion to inform him to it's status during the period of sensing, either Active or sleep until the starting of next round. Based on the decision, the leader as other nodes in subregion, either go to be active or go to be sleep during current sensing phase. the other nodes in the same subregion will stay in listening mode waiting the ActiveSleep packet from the leader. After finishing the time period for sensing, all the sensor nodes in the same subregion will start new round by executing the DiLCO protocol and the lifetime in the subregion will continue until all the sensor nodes are died or the network becomes disconnected in the subregion. + +\section{Coverage problem formulation} +\label{cp} + +\indent Our model is based on the model proposed by +\cite{pedraza2006} where the objective is to find a maximum number of +disjoint cover sets. To accomplish this goal, authors proposed an +integer program, which forces undercoverage and overcoverage of targets +to become minimal at the same time. They use binary variables +$x_{jl}$ to indicate if sensor $j$ belongs to cover set $l$. In our +model, we consider binary variables $X_{j}$, which determine the +activation of sensor $j$ in the sensing phase of the round. We also +consider primary points as targets. The set of primary points is +denoted by $P$ and the set of sensors by $J$. + +\noindent For a primary point $p$, let $\alpha_{jp}$ denote the +indicator function of whether the point $p$ is covered, that is: +\begin{equation} +\alpha_{jp} = \left \{ +\begin{array}{l l} + 1 & \mbox{if the primary point $p$ is covered} \\ + & \mbox{by sensor node $j$}, \\ + 0 & \mbox{otherwise.}\\ +\end{array} \right. +%\label{eq12} +\end{equation} +The number of active sensors that cover the primary point $p$ is equal +to $\sum_{j \in J} \alpha_{jp} * X_{j}$ where: +\begin{equation} +X_{j} = \left \{ +\begin{array}{l l} + 1& \mbox{if sensor $j$ is active,} \\ + 0 & \mbox{otherwise.}\\ +\end{array} \right. +%\label{eq11} +\end{equation} +We define the Overcoverage variable $\Theta_{p}$ as: +\begin{equation} + \Theta_{p} = \left \{ +\begin{array}{l l} + 0 & \mbox{if the primary point}\\ + & \mbox{$p$ is not covered,}\\ + \left( \sum_{j \in J} \alpha_{jp} * X_{j} \right)- 1 & \mbox{otherwise.}\\ +\end{array} \right. +\label{eq13} +\end{equation} +\noindent More precisely, $\Theta_{p}$ represents the number of active +sensor nodes minus one that cover the primary point $p$.\\ +The Undercoverage variable $U_{p}$ of the primary point $p$ is defined +by: +\begin{equation} +U_{p} = \left \{ +\begin{array}{l l} + 1 &\mbox{if the primary point $p$ is not covered,} \\ + 0 & \mbox{otherwise.}\\ +\end{array} \right. +\label{eq14} +\end{equation} + +\noindent Our coverage optimization problem can then be formulated as follows +\begin{equation} \label{eq:ip2r} +\left \{ +\begin{array}{ll} +\min \sum_{p \in P} (w_{\theta} \Theta_{p} + w_{U} U_{p})&\\ +\textrm{subject to :}&\\ +\sum_{j \in J} \alpha_{jp} X_{j} - \Theta_{p}+ U_{p} =1, &\forall p \in P\\ +%\label{c1} +%\sum_{t \in T} X_{j,t} \leq \frac{RE_j}{e_t} &\forall j \in J \\ +%\label{c2} +\Theta_{p}\in \mathbb{N} , &\forall p \in P\\ +U_{p} \in \{0,1\}, &\forall p \in P \\ +X_{j} \in \{0,1\}, &\forall j \in J +\end{array} +\right. +\end{equation} + + + +\begin{itemize} +\item $X_{j}$ : indicates whether or not the sensor $j$ is actively + sensing in the round (1 if yes and 0 if not); +\item $\Theta_{p}$ : {\it overcoverage}, the number of sensors minus + one that are covering the primary point $p$; +\item $U_{p}$ : {\it undercoverage}, indicates whether or not the primary point + $p$ is being covered (1 if not covered and 0 if covered). +\end{itemize} + +The first group of constraints indicates that some primary point $p$ +should be covered by at least one sensor and, if it is not always the +case, overcoverage and undercoverage variables help balancing the +restriction equations by taking positive values. There are two main +objectives. First, we limit the overcoverage of primary points in order to +activate a minimum number of sensors. Second we prevent the absence of monitoring on + some parts of the subregion by minimizing the undercoverage. The +weights $w_\theta$ and $w_U$ must be properly chosen so as to +guarantee that the maximum number of points are covered during each +round. + + +\section{Simulation Results and Analysis} +\label{exp} +In this section, we conducted a series of simulations to evaluate the +efficiency and the relevance of our approach, using the discrete event +simulator OMNeT++ \cite{varga}. The simulation parameters are summarized in +Table~\ref{table3} + +\begin{table}[ht] +\caption{Relevant parameters for network initializing.} +% title of Table +\centering +% used for centering table +\begin{tabular}{c|c} +% centered columns (4 columns) + \hline +%inserts double horizontal lines +Parameter & Value \\ [0.5ex] + +%Case & Strategy (with Two Leaders) & Strategy (with One Leader) & Simple Heuristic \\ [0.5ex] +% inserts table +%heading +\hline +% inserts single horizontal line +Sensing Field & $(50 \times 25)~m^2 $ \\ +% inserting body of the table +%\hline +Nodes Number & 50, 100, 150, 200 and 250~nodes \\ +%\hline +Initial Energy & 50-75~joules \\ +%\hline +Sensing Period & 20 Minutes \\ +$E_{thr}$ & 12.2472 Joules\\ +$R_s$ & 5~m \\ +%\hline +$w_{\Theta}$ & 1 \\ +% [1ex] adds vertical space +%\hline +$w_{U}$ & $|P^2|$ +%inserts single line +\end{tabular} +\label{table3} +% is used to refer this table in the text +\end{table} + +A simulation +ends when all the nodes are dead or the sensor network becomes +disconnected (some nodes may not be able to send, to a base station, an +event they sense). +Our proposed coverage protocol uses a simple energy model defined by~\cite{ChinhVu} that based on ~\cite{raghunathan2002energy} with some modification as energy consumption model for each wireless sensor node in the network and for all the simulations. + +The modification is to add the energy consumption for receiving the packets as well as we ignore the part that related to the sensing range because we used fixed sensing range. The new energy consumption model will take inro account the energy consumption for communication (packet transmission/reception), data sensing and computational energy. + +There are four subsystems in each sensor node that consume energy: the micro-controller +unit (MCU) subsystem which is capable of computation, communication subsystem which is responsible for +transmitting/receiving messages, sensing subsystem that collects data, and the powe suply which supplies power to the complete sensor node ~\cite{raghunathan2002energy}. In our model, we will concentrate on first three main subsystems and each subsystem can be turned on or off depending on the current status of the sensor which is summarized in Table~\ref{table4}. + +\begin{table}[ht] +\caption{The Energy Consumption Model} +% title of Table +\centering +% used for centering table +\begin{tabular}{|c|c|c|c|c|} +% centered columns (4 columns) + \hline +%inserts double horizontal lines +Sensor mode & MCU & Radio & Sensing & Power (mW) \\ [0.5ex] +\hline +% inserts single horizontal line +Listening & ON & ON & ON & 20.05 \\ +% inserting body of the table +\hline +Active & ON & OFF & ON & 9.72 \\ +\hline +Sleep & OFF & OFF & OFF & 0.02 \\ +\hline + \multicolumn{4}{|c|}{Energy needed to send/receive a 1-bit} & 0.2575\\ + \hline +\end{tabular} + +\label{table4} +% is used to refer this table in the text +\end{table} + +For the simplicity, we ignore the energy needed to turn on the +radio, to start up the sensor node, the transition from mode to another, etc. We also do not consider the need of collecting sensing data. Thus, when a sensor becomes active (i.e., it already decides it status), it can turn its radio off to save battery. Since our couverage optimization protocol uses two types of the packets, the size of the INFO-Packet and Status-Packet are 112 bits and 16 bits respectively. The value of energy spent to send a message shown in Table~\ref{table4} is obtained by using the equation in ~\cite{raghunathan2002energy} to calculate the energy cost for transmitting messages and we propose the same value for receiving the packets. + + +We performed simulations for five different densities varying from 50 to 250~nodes. Experimental results +were obtained from randomly generated networks in which nodes are +deployed over a $(50 \times 25)~m^2 $ sensing field. More precisely, the deployment is controlled at a coarse scale in order to ensure that the deployed nodes can fully cover the sensing + field with the given sensing range. +The energy of each node in a network is initialized randomly within the +range 50-75~joules. Each sensor node will not participate in the next round if its remaining energy is less than $E_{thr}$, the minimum energy needed for the node to stay alive during one round. + +In the simulations, we introduce the following performance metrics to +evaluate the efficiency of our approach: + +\begin{enumerate}[i)] + +\item {Coverage Ratio (CR):} the coverage ratio measures how much the area of a sensor field is covered. In our case, we treated the sensing fields as a grid, and used each grid point as a sample point +for calculating the coverage. The coverage ratio can be calculated by: +\begin{equation*} +\scriptsize +\mbox{CR}(\%) = \frac{\mbox{$n$}}{\mbox{$N$}} \times 100. +\end{equation*} +Where: $n$ is the Number of Covered Grid points by the Active Sensors of the all subregions of the network during the current sensing phase and $N$ is total number of grid points in the sensing field of the network. +The accuracy of this method depends on the distance between grids. In our +simulations, the sensing field has been divided into 50 by 25 grid points, which means +there are $51 \times 26~ = ~ 1326$ points in total. Therefore, for our simulations, the error in the coverage calculation is less than ~ 1 $\% $. + +\item{ Number of Active Sensors Ratio(ASR):} It is important to have as few active nodes as possible in each round, +in order to minimize the communication overhead and maximize the +network lifetime.The Active Sensors Ratio is defined as follows: +\begin{equation*} +\scriptsize +\mbox{ASR}(\%) = \sum\limits_{r=1}^R \left( \frac{\mbox{$A_r$}}{\mbox{$S$}} \times 100 \right) . +\end{equation*} +Where: $A_r$ is the number of active sensors in the subregion $r$ during the current sensing phase, $S$ is the total number of sensors in the network, and $R$ is the total number of the subregions in the network. + +\item {Energy Saving Ratio(ESR):} is defined by: +\begin{equation*} +\scriptsize +\mbox{ESR}(\%) = \sum\limits_{r=1}^R \left( \frac{\mbox{${ES}_r$}}{\mbox{$S$}} \times 100 \right) . +\end{equation*} +Where: ${ES}_r$ is the number of alive sensors in subregion $r$ during this round. The longer the ratio is, the more redundant sensor nodes are switched off, and consequently the longer the network may live. + +\item {Energy Consumption:} + + Energy Consumption (EC) can be seen as the total energy consumed by the sensors during the lifetime of the network divided by the total number of rounds. The EC can be computed as follow: \\ + \begin{equation*} +\scriptsize +\mbox{EC} = \frac{\mbox{$\sum\limits_{d=1}^D \left( E^c_d + E^l_d + E^a_d + E^s_d \right)$ }}{\mbox{$D$}} . +\end{equation*} +%\begin{equation*} +%\scriptsize +%\mbox{EC} = \frac{\mbox{$\sum\limits_{d=1}^D E^c_d$}}{\mbox{$D$}} + \frac{\mbox{$\sum\limits_{d=1}^D %E^l_d$}}{\mbox{$D$}} + \frac{\mbox{$\sum\limits_{d=1}^D E^a_d$}}{\mbox{$D$}} + %\frac{\mbox{$\sum\limits_{d=1}^D E^s_d$}}{\mbox{$D$}}. +%\end{equation*} + +Where: D is the total number of rounds. +The total energy consumed by the sensors (EC) comes through taking into consideration four main energy factors, which are $E^c_d$, $E^l_d$, $E^a_d$, and $E^s_d$. +The factor $E^c_d$ represents the energy consumption resulting from wireless communications is calculated by taking into account the energy spent by all the nodes when transmitting and +receiving packets during round $d$. The $E^l_d$ represents the energy consumed by all the sensors during the listening mode before taking the decision to go Active or Sleep in round $d$. The $E^a_d$ and $E^s_d$ are refered to enegy consumed by the turned on and turned off sensors in the period of sensing during the round $d$. + +\item {Network Lifetime:} we have defined the network lifetime as the time until all +nodes have been drained of their energy or each sensor network monitoring an area has become disconnected. + + +\item {Execution Time:} a sensor node has limited energy resources and computing power, +therefore it is important that the proposed algorithm has the shortest +possible execution time. The energy of a sensor node must be mainly +used for the sensing phase, not for the pre-sensing ones. + +\item {The number of stopped simulation runs:} we will study the percentage of simulations, which are stopped due to network disconnections per round. + +\end{enumerate} + +\subsection{Performance Comparison for differnet subregions} +\label{sub1} +In this subsection, we will study the performance of our approach for a different number of subregions (Leaders). +10~simulation runs are performed with different network topologies for each node density. The results presented hereafter are the average of these 10 runs. +Our approach are called strategy 1 ( With 1 Leader), strategy 2 ( With 2 Leaders), strategy 3 ( With 4 Leaders), and strategy 4 ( With 8 Leaders), strategy 5 ( With 16 Leaders) and strategy 6 ( With 32 Leaders). The strategy 1 ( With 1 Leader) is a centralized approach on all the area of the interest, while strategy 2 ( With 2 Leaders), strategy 3 ( With 4 Leaders), strategy 4 ( With 8 Leaders), strategy 5 ( With 16 Leaders) and strategy 6 ( With 32 Leaders) are distributed on two, four, eight, sixteen, and thirty-two subregions respectively. +\subsubsection{The impact of the number of rounds on the coverage ratio} +In this experiment, Figure~\ref{fig3} shows the impact of the +number of rounds on the average coverage ratio for 150 deployed nodes +for the four strategies. +\parskip 0pt +\begin{figure}[h!] +\centering + \includegraphics[scale=0.43] {R1/CR.eps} +\caption{The impact of the number of rounds on the coverage ratio for 150 deployed nodes} +\label{fig3} +\end{figure} + +It can be seen that the six strategies +give nearly similar coverage ratios during the first three rounds. +As shown in the figure ~\ref{fig3}, when we increase the number of sub-regions, It will leads to cover the area of interest for a larger number of rounds. Coverage ratio decreases when the number of rounds increases due to dead nodes. Although some nodes are dead, +thanks to strategy~5 and strategy~6, other nodes are preserved to ensure the +coverage. Moreover, when we have a dense sensor network, it leads to +maintain the full coverage for a larger number of rounds. Strategy~5 and strategy~6 are +slightly more efficient than other strategies, because they subdivides +the area of interest into 16~subregions and 32~subregions if one of the subregions becomes +disconnected, the coverage may be still ensured in the remaining subregions. + +\subsubsection{The impact of the number of rounds on the active sensors ratio} + Figure~\ref{fig4} shows the average active nodes ratio versus the number of rounds +for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R1/ASR.eps} +\caption{The impact of the number of rounds on the active sensors ratio for 150 deployed nodes } +\label{fig4} +\end{figure} + +The results presented in figure~\ref{fig4} show the superiority of +the proposed strategy~5 and strategy~6, in comparison with the other strategies. The +strategy with less number of leaders uses less active nodes than the other strategies, which uses a more number of leaders until the last rounds, because it uses central control on +the larger area of the sensing field. The advantage of the strategy~5 and strategy~6 are +that even if a network is disconnected in one subregion, the other ones +usually continues the optimization process, and this extends the lifetime of the network. + +\subsubsection{The impact of the number of rounds on the energy saving ratio} +In this experiment, we consider a performance metric linked to energy. Figure~\ref{fig5} shows the average energy saving ratio versus number of rounds for all six strategies and for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R1/ESR.eps} +\caption{The impact of the number of rounds on the energy saving ratio for 150 deployed nodes} +\label{fig5} +\end{figure} + +The simulation results show that our strategies allow to efficiently +save energy by turning off some sensors during the sensing phase. As +expected, the strategy~5 and strategy~6 are usually slightly better than +the other strategies, because the distributed optimization on larger number of subregions permits to minimize the energy needed for communication and It led to save more energy obviously. Indeed, when there are more than one subregion more nodes remain awake near the border shared by them but the energy consumed by these nodes have no effect in comparison with the energy consumed by the communication. Note that again as the number of rounds increases the strategy~5 and strategy~6 becomes the most performing one, since it takes longer to have the Sixteen or Thirty-two subregion networks simultaneously disconnected. + +\subsubsection{The percentage of stopped simulation runs} +Figure~\ref{fig6} illustrates the percentage of stopped simulation +runs per round for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.43]{R1/SR.eps} +\caption{The percentage of stopped simulation runs compared to the number of rounds for 150 deployed nodes } +\label{fig6} +\end{figure} +It can be observed that the strategy~1 is the approach which stops first because it apply the centralized control on all the area of interest that is why it is first exhibits network disconnections. Thus, as explained previously, in case of the strategy~5 and strategy~6 with several subregions the optimization effectively continues as long as a network in a subregion is still connected. This longer partial coverage optimization participates in extending the network lifetime. + +\subsubsection{The Energy Consumption} +In this experiment, we study the effect of the energy consumed by the sensors during the communication, listening, active, and sleep modes for different network densities. Figure~\ref{fig7} illustrates the energy consumption for the different +network sizes and for the four proposed stratgies. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R1/EC.eps} +\caption{The Energy Consumption} +\label{fig7} +\end{figure} + +The results show that the strategy with eight leaders is the most competitive from the energy +consumption point of view. The other strategies have a high energy consumption due to many +communications as well as the energy consumed during the listening before taking the decision. In fact, a distributed method on the subregions greatly reduces the number of communications and the time of listening so thanks to the partitioning of the initial +network in several independent subnetworks. + + +\subsubsection{The impact of the number of sensors on execution time} +In this experiment, we study the the impact of the size of the network on the excution time of the our distributed optimization approach. Table~\ref{table1} gives the average execution times in seconds for the decision phase (solving of the optimization problem) during one round. They are given for the different approaches and various numbers of sensors. We can see from Table~\ref{table1}, that the strategy~6 has very low execution times in comparison with other strategies, because it distributed on larger number of small subregions. Conversely, the strategy~1 which requires to solve an optimization problem considering all the nodes presents high execution times. +%Moreover, increasing the network size by 50~nodes multiplies the time by almost a factor of 10. +The strategy~6 has more suitable times. We think that in distributed fashion the solving of the optimization problem in a subregion can be tackled by sensor nodes. Overall, to be able to deal with very large networks, a distributed method is clearly required. +\begin{table}[ht] +\caption{The Execution Time(s) vs The Number of Sensors} +% title of Table +\centering +% used for centering table +\begin{tabular}{|c|c|c|c|c|c|} +%\begin{tcolorbox}[tab2,tabularx={X|Y|Y|Y|Y|Y|Y}] +% centered columns (4 columns) + \hline +%inserts double horizontal lines +\cellcolor[gray]{0.8} Strategy & \multicolumn{5}{|c|}{\cellcolor[gray]{0.8} The Number of Sensors } \\ + \cellcolor[gray]{0.8} Name &\cellcolor[gray]{0.8} 50 & \cellcolor[gray]{0.8} 100 & \cellcolor[gray]{0.8} 150 & \cellcolor[gray]{0.8} 200 & \cellcolor[gray]{0.8} 250 \\ [0.5ex] +\hline\hline +% inserts single horizontal line +\cellcolor[gray]{0.8} Strategy~1 & 0.1848 & 1.8957 & 12.2119 & 152.2581 & 1542.5396 \\ +\hline +\cellcolor[gray]{0.8} Strategy~2 & 0.0466 & 0.2190 & 0.6323 & 2.2853 & 5.6561 \\ +\hline + +\cellcolor[gray]{0.8} Strategy~3 & 0.0118 & 0.0445 & 0.0952 & 0.1849 & 0.3148 \\ +\hline + +\cellcolor[gray]{0.8} Strategy~4 & 0.0041 & 0.0127 & 0.0271 & 0.0484 & 0.0723 \\ +\hline + +\cellcolor[gray]{0.8} Strategy~5 & 0.0025 & 0.0037 & 0.0061 & 0.0083 & 0.0126 \\ +\hline + +\cellcolor[gray]{0.8} Strategy~6 & 0.0008 & 0.0022 & 0.0022 & 0.0032 & 0.0035 \\ +\hline +%inserts single line +\end{tabular} +%\end{tcolorbox} +\label{table1} +% is used to refer this table in the text +\end{table} + + +\subsubsection{The Network Lifetime} +Finally, in figure~\ref{fig8}, the +network lifetime for different network sizes and for the four strategies is illustrated. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R1/LT.eps} +\caption{The Network Lifetime } +\label{fig8} +\end{figure} +We see that the strategy 1 results in execution times that quickly become unsuitable for a sensor network as well as the energy consumed during the communication seems to be huge because it used a centralised control on the all the area of interest. + +As highlighted by figure~\ref{fig8}, the network lifetime obviously +increases when the size of the network increases, with our approach strategy~6 +that leads to the larger lifetime improvement. By choosing the best +suited nodes, for each round, to cover the area of interest and by +letting the other ones sleep in order to be used later in next rounds, +our strategy~6 efficiently prolonges the network lifetime. Comparison shows that +the Strategy~6, which uses 32 leaders, is the best one because it is robust to network disconnection during the network lifetime. It also means that distributing the protocol in each node and +subdividing the sensing field into many subregions, which are managed independently and simultaneously, is the most relevant way to maximize the lifetime of a network. + + +\subsection{Performance Comparison for Different Primary Point Models} +\label{sub2} +Based on the results, which are conducted in subsection~\ref{sub1}, we will study the performance of the Strategy~4 approach for a different primary point models. The objective of this comparison is to select the suitable primary point model to be used by our DiLCO protocol. +50~simulation runs are performed with different network topologies for each node density. The results presented hereafter are the average of these 50 runs. +In this comparisons, our approaches are called Model~1( With 5 Primary Points), Model~2 ( With 9 Primary Points), Model~3 ( With 13 Primary Points), Model~4 ( With 17 Primary Points), and Model~5 ( With 21 Primary Points). The simulation will applied with strategy~4 by subdividing the area of interest into eight subregions and distribute our strategy~4 approach on the all subregions. + +\subsubsection{The impact of the number of rounds on the coverage ratio} +In this experiment, we Figure~\ref{fig33} shows the impact of the +number of rounds on the average coverage ratio for 150 deployed nodes +for the four strategies. +\parskip 0pt +\begin{figure}[h!] +\centering + \includegraphics[scale=0.5] {R2/CR.eps} +\caption{The impact of the number of rounds on the coverage ratio for 150 deployed nodes} +\label{fig33} +\end{figure} +It is shown that all models provides a very near coverage ratios during the first twelve rounds, with very small superiority for the models with higher number of primary points. +Moreover, when the number of rounds increases, coverage +ratio produced by Model~3, Model~4 and Model~5 decreases in comparison with Model~1 and Model~2 due to the high energy consumption during the listening to take the decision after finishing optimization process for larger number of primary points. As shown in figure ~\ref{fig33}, Coverage ratio decreases when the number of rounds increases due to dead nodes. Although some nodes are dead, +thanks to Model~2, which is slightly more efficient than other Models, because Model~2 balances between the number of rounds and the better coverage ratio in comparison with other Models. + +\subsubsection{The impact of the number of rounds on the active sensors ratio} + Figure~\ref{fig44} shows the average active nodes ratio versus the number of rounds +for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R2/ASR.eps} +\caption{The impact of the number of rounds on the active sensors ratio for 150 deployed nodes } +\label{fig44} +\end{figure} + +The results presented in figure~\ref{fig44} show the superiority of +the proposed Model 1, in comparison with the other Models. The +model with less number of primary points uses less active nodes than the other models, which uses a more number of primary points to represent the area of the sensor. According to the results that presented in figure~\ref{fig33}, we observe that although the Model~1 continue to a larger number of rounds, but it has less coverage ratio compared with other models.The advantage of the Model~2 approach is to use less number of active nodes for each round compared with Model~3, Model~4 and Model~5, and this led to continue for a larger number of rounds with extending the network lifetime. Model~2 has a better coverage ratio compared to Model~1 and acceptable number of rounds. + +\subsubsection{The impact of the number of rounds on the energy saving ratio} +In this experiment, we study the effect of increasing primary points on the energy conservation in the wireless sensor network. Figure~\ref{fig55} shows the average Energy Saving Ratio versus number of rounds for all four Models and for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R2/ESR.eps} +\caption{The impact of the number of rounds on the energy saving ratio for 150 deployed nodes} +\label{fig55} +\end{figure} +The simulation results show that our Models allow to efficiently +save energy by turning off the redundant sensors during the sensing phase. + As expected, the Model 1 is usually slightly better than the other Models, because it turn on a less number of nodes during the sensing phase in comparison with other models and according to the results, which are observed in figure ~\ref{fig33}, and It led to save more energy obviously. + Indeed, when there are more primary points to represent the area of the sensor leads to activate more nodes to cover them and in the same time ensuring more coverage ratio. From the previous presented results, we see it is preferable to choose the model that balance between the coverage ratio and the number of rounds. The Model~2 becomes the most performing one, since it could apply this requirement where, It can cover the area of interest with a good coverage ratio and for a larger number of rounds prolonging the lifetime of the wireless sensor network. + +\subsubsection{The percentage of stopped simulation runs} +In this study, we want to show the effect of increasing the primary points on the number of stopped simulation runs for each round. Figure~\ref{fig66} illustrates the percentage of stopped simulation +runs per round for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R2/SR.eps} +\caption{The percentage of stopped simulation runs compared to the number of rounds for 150 deployed nodes } +\label{fig66} +\end{figure} +As shown in Figure~\ref{fig66}, when the number of primary points increase leads to increase the percentage of the stopped simulation runs per rounds and starting from round 19 until the the network is died. The reason behind the increase is the increase in the sensors dead when the primary points increases. We can observe that the Model~1 is a better than other models because it conserve more energy by turn on less number of sensors during the sensing phase, but in the same time it preserve the coverage with a less coverage ratio in comparison with other models. Model~2 seems to be more suitable to be used in wireless sensor networks. + + +\subsubsection{The Energy Consumption} +In this experiment, we study the effect of increasing the primary points to represent the area of the sensor on the energy consumed by the wireless sensor network for different network densities. Figure~\ref{fig77} illustrates the energy consumption for the different network sizes and for the five proposed Models. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R2/EC.eps} +\caption{The Energy Consumption} +\label{fig77} +\end{figure} + +We see from the results presented in Figure~\ref{fig77}, The energy consumed by the network for each round increases when the primary points increases, because the decision for optimization process will takes more time leads to consume more energy during the listening mode. The results show that the Model~1 is the most competitive from the energy consumption point of view but the worst one from coverage ratio point of view. The other Models have a high energy consumption due to the increase in the primary points, which are led to increase the energy consumption during the listening mode before taking the optimization decision. In fact, we see that the Model~2 is a good candidate to be used the wireless sensor network because I have a good coverage ratio and a suitable energy consumption in comparison with other models. + + +\subsubsection{The impact of the number of sensors on execution time} +In this experiment, we study the the impact of the increase in primary points on the excution time of the our distributed optimization approach. Figure~\ref{figt} gives the average execution times in seconds for the decision phase (solving of the optimization problem) during one round. + +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R2/T.eps} +\caption{The Execution Time(s) vs The Number of Sensors } +\label{figt} +\end{figure} + +They are given for the different primary point models and +various numbers of sensors. We can see from Figure~\ref{figt}, that the Model~1 has lower execution time in comparison with other Models, because it used smaller number of primary points to represent the area of the sensor. Conversely, the other primary point models presents higher execution times. +Moreover, the Model~2 has more suitable times, coverage ratio, and saving energy ratio leads to continue for a larger number of rounds extending the network lifetime. We think that a good primary point model, this one that balances between the coverage ratio and the number of rounds during the lifetime of the network. + +\subsubsection{The Network Lifetime} +Finally, we will study the effect of increasing the primary points on the lifetime of the network. In figure~\ref{fig88}, the network lifetime for different network sizes and for the five proposed models is illustrated. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R2/LT.eps} +\caption{The Network Lifetime } +\label{fig88} +\end{figure} +As highlighted by figure~\ref{fig88}, the network lifetime obviously +increases when the size of the network increases, with our approach Model~1 +that leads to the larger lifetime improvement. +Comparison shows that the Model~1, which uses less number of primary points , is the best one because it is less energy consumption during the network lifetime. It is also the worst one from the point of view of coverage ratio. Our proposed Model~2 efficiently prolongs the network lifetime with a good coverage ratio in comparison with other models. + +\subsection{Performance Comparison for Different Approaches} +Based on the results, which are conducted from previous two subsections, ~\ref{sub1} and \ref{sub2}, we found that Our DiLCO protocol with Strategy~5 and Strategy~6 with Model~2 are the best candidate to be compared with other two approches. The first approach, called DESK that proposed by ~\cite{ChinhVu}, which is a full distributed coverage algorithm. The second approach, called GAF ~\cite{xu2001geography}, consists in dividing the region into fixed squares. During the decision phase, in each square, one sensor is +chosen to remain on during the sensing phase time. In this subsection, 50 simulation runs are +performed with different network topologies. The results +presented hereafter are the average of these 50 runs. + +\subsubsection{The impact of the number of rounds on the coverage ratio} +In this experiment, Figure~\ref{fig333} shows the impact of the +number of rounds on the average coverage ratio for 150 deployed nodes +for the three approaches. +\parskip 0pt +\begin{figure}[h!] +\centering + \includegraphics[scale=0.45] {R3/CR.eps} +\caption{The impact of the number of rounds on the coverage ratio for 150 deployed nodes} +\label{fig333} +\end{figure} + +It is shown that DESK and GAF provides a +a little better coverage ratio with 99.99\% and 99.92\% against 99.26\% and 99.0\% produced by +our approaches Strategy~5 and Strategy~6 for the lowest number of rounds. +This is due to the fact that our DiLCO protocol with Strategy~5 and Strategy~6 put in sleep mode +redundant sensors using optimization (which lightly decreases the coverage ratio) while there are more nodes are active in the case of DESK and GAF. +Moreover, when the number of rounds increases, coverage ratio produced by DESK and GAF protocols decreases. This is due to dead nodes. However, Our DiLCO protocol with Strategy~5 and Strategy~6 maintains almost full coverage. This is because it optimize the coverage and the lifetime in wireless sensor network by selecting the best representative sensor nodes to take the reponsibilty of coverage during the sensing phase and this will leads to continue for a larger number of rounds and prolonging the network lifetime; although some nodes are dead, sensor activity scheduling of our protocol chooses other nodes to ensure the coverage of the area of interest. + +\subsubsection{The impact of the number of rounds on the active sensors ratio} +It is important to have as few active nodes as possible in each round, +in order to minimize the communication overhead and maximize the +network lifetime. Figure~\ref{fig444} shows the average active nodes ratio versus the number of rounds for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R3/ASR.eps} +\caption{The impact of the number of rounds on the active sensors ratio for 150 deployed nodes } +\label{fig444} +\end{figure} + +The results presented in figure~\ref{fig444} show the superiority of +the proposed DiLCO protocol with Strategy~5 and Strategy~6, in comparison with the other approaches. We can observe that DESK and GAF have 37.5 \% and 44.5 \% active nodes and our DiLCO protocol with Strategy~5 and Strategy~6 competes perfectly with only 24.8 \% and 26.8 \% active nodes for the first four rounds. Then as the number of rounds increases our DiLCO protocol with Strategy~5 and Strategy~6 have larger number of active nodes in comparison with DESK and GAF, especially from tenth round because DiLCO gives a better coverage ratio after tenth round than other approaches. We see that the DESK and GAF have less number of active nodes because there are many nodes are died due to the high energy consumption by the redundant nodes during the sensing phase. + +\subsubsection{The impact of the number of rounds on the energy saving ratio} +In this experiment, we will perform a comparison study for the performance of our protocol with Strategy~4 with two other approaches from the point of view of energy conservation. Figure~\ref{fig555} shows the average Energy Saving Ratio versus number of rounds for all three approaches and for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R3/ESR.eps} +\caption{The impact of the number of rounds on the energy saving ratio for 150 deployed nodes} +\label{fig555} +\end{figure} +The simulation results show that DESK protocol has +energy saving ratio 100 \% during the first three rounds. After that, the energy saving ratio of DESK decreased obviously during the next rounds due to the died nodes until the died of the network in the $15^{th}$ round. + +On the other side, our DiLCO protocol with Strategy~5 and Strategy~6 have the same energy saving ratio 100 \% during the first four rounds. From the $5^{th}$ round to $12^{th}$ round, GAF provides a beter energy saving ratio because it employs a load balancing for energy usage so that all the nodes remain up and running together as long as possible by selecting the node with higher lifetime in each square and at each round, so it success to prolong the lifetime without taking the coverage ratio into account but it postpond the the increase in the dead nodes until the $13^{th}$ round. After that, our DiLCO protocol with Strategy~5 and Strategy~6 allow to efficiently +save energy by turning off the redundant sensors during the sensing phase. As +expected, our DiLCO protocol with with Strategy~5 and Strategy~6 is usually slightly better than the other approaches, because the distributed optimization on the subregions permits to minimize the energy needed for communication as well as turn off all the redundant sensor nodes, which are led to save more energy obviously and increase the lifetime of the network. Note that again as the number of rounds increases, our DiLCO protocol becomes the most performing one, since it is distributed the optimization process on the 16 or 32 subregion networks simultaneously so as to optimize the coverage and the lifetime in the network. + +\subsubsection{The percentage of stopped simulation runs} +The results presented in this experiment, is to show the comparison of our DiLCO protocol with Strategy~5 and Strategy~6 with other two approaches from the point of view the stopped simulation runs per round. +Figure~\ref{fig666} illustrates the percentage of stopped simulation +runs per round for 150 deployed nodes. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.4]{R3/SR.eps} +\caption{The percentage of stopped simulation runs compared to the number of rounds for 150 deployed nodes } +\label{fig666} +\end{figure} +It can be observed that the DESK is the approach, which stops first because it consumes more energy for communication as well as it turn on a large number of redundant nodes during the sensing phase. Our DiLCO protocol with Strategy~5 and Strategy~6 have less stopped simulation runs in comparison with DESK and GAFbecause it distributed the optimization on several subregions in order to optimize the coverage and the lifetime of the network by activating a less number of nodes during the sensing phase leading to extend the network lifetime and coverage preservation.The optimization effectively continues as long as a network in a subregion is still connected. + +\subsubsection{The Energy Consumption} +In this experiment, we study the effect of the energy consumed by the wireless sensor network during the communication, listening, active, and sleep modes for different network densities and compare it with other approaches. Figure~\ref{fig777} illustrates the energy consumption for the different +network sizes and for the four approaches. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R3/EC.eps} +\caption{The Energy Consumption} +\label{fig777} +\end{figure} +The results show that our DiLCO protocol with Strategy~5 and Strategy~6 are the most competitive from the energy consumption point of view. The other approaches have a high energy consumption due to activating a larger number of redundant nodes as well as the energy consumed for communication, active and listening modes. In fact, a distributed method on the subregions greatly reduces the number of communications and the time of listening so thanks to the partitioning of the initial network into several independent subnetworks. + +\subsubsection{The Network Lifetime} +Finally, In this experiment, we will show the superiority of our DiLCO protocol with Strategy~5 and Strategy~6 against other two approaches in prolonging the network lifetime. In Figure~\ref{fig888}, the +network lifetime for different network sizes and for the four approaches. +\begin{figure}[h!] +\centering +\includegraphics[scale=0.5]{R3/LT.eps} +\caption{The Network Lifetime } +\label{fig888} +\end{figure} + +As highlighted by figure~\ref{fig888}, the network lifetime obviously +increases when the size of the network increases, with our DiLCO protocol with Strategy~5 and Strategy~6 +that leads to maximize the lifetime of the network compared with other approaches. +By choosing the best suited nodes, for each round, by optimizing the coverage and lifetime of the network to cover the area of interest and by +letting the other ones sleep in order to be used later in next rounds, our DiLCO protocol with Strategy~5 and Strategy~6 efficiently prolonges the network lifetime. +Comparison shows that our DiLCO protocol with Strategy~5 and Strategy~6, which uses distributed optimization on the subregions, is the best +one because it is robust to network disconnection during the network lifetime as well as it consume less energy in comparison with other approaches. It also means that distributing the algorithm in each node and subdividing the sensing field into many subregions, which are managed +independently and simultaneously, is the most relevant way to maximize the lifetime of a network. + +\section{Conclusion and Future Works} +\label{sec:conclusion} + +In this paper, we have addressed the problem of the coverage and the lifetime +optimization in wireless sensor networks. This is a key issue as +sensor nodes have limited resources in terms of memory, energy and +computational power. To cope with this problem, the field of sensing +is divided into smaller subregions using the concept of divide-and-conquer method, and then a multi-rounds coverage protocol will optimize coverage and lifetime performances in each subregion. +The proposed protocol combines two efficient techniques: network +leader election and sensor activity scheduling, where the challenges +include how to select the most efficient leader in each subregion and +the best representative active nodes that will optimize the network lifetime +while taking the responsibility of covering the corresponding +subregion. The network lifetime in each subregion is divided into +rounds, each round consists of four phases: (i) Information Exchange, +(ii) Leader Election, (iii) an optimization-based Decision in order to +select the nodes remaining active for the last phase, and (iv) +Sensing. The simulations show the relevance of the proposed DiLCO +protocol in terms of lifetime, coverage ratio, active sensors ratio, +energy saving, energy consumption, execution time, and the number of +stopped simulation runs due to network disconnection. Indeed, when +dealing with large and dense wireless sensor networks, a distributed +approach like the one we propose allows to reduce the difficulty of a +single global optimization problem by partitioning it in many smaller +problems, one per subregion, that can be solved more easily. + +In future work, we plan to study and propose a coverage optimization protocol, which +computes all active sensor schedules in one time, using +optimization methods. The round will still consist of 4 phases, but the + decision phase will compute the schedules for several sensing phases + which, aggregated together, define a kind of meta-sensing phase. +The computation of all cover sets in one time is far more +difficult, but will reduce the communication overhead. +% use section* for acknowledgement +%\section*{Acknowledgment} + + + + + + + + + +%% \linenumbers + +%% main text +%\section{} +%\label{} + +%% The Appendices part is started with the command \appendix; +%% appendix sections are then done as normal sections +%% \appendix + +%% \section{} +%% \label{} + +%% If you have bibdatabase file and want bibtex to generate the +%% bibitems, please use +%% +%% \bibliographystyle{elsarticle-num} +%% \bibliography{} + +%% else use the following coding to input the bibitems directly in the +%% TeX file. + \bibliographystyle{elsarticle-num} + \bibliography{elsarticle-template-num} + +\end{document} + + +%%\bibitem{} + +%\end{thebibliography} +%\end{document} +\endinput +%% +%% End of file `elsarticle-template-num.tex'. diff --git a/elsarticle.cls b/elsarticle.cls new file mode 100644 index 0000000..1b15bce --- /dev/null +++ b/elsarticle.cls @@ -0,0 +1,810 @@ +%% +%% This is file `elsarticle.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% elsarticle.dtx (with options: `class') +%% +%% Copyright 2007, 2008, 2009 Elsevier Ltd +%% +%% This file is part of the 'Elsarticle Bundle'. +%% ------------------------------------------- +%% +%% It may be distributed under the conditions of the LaTeX Project Public +%% License, either version 1.2 of this license or (at your option) any +%% later version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% The list of all files belonging to the 'Elsarticle Bundle' is +%% given in the file `manifest.txt'. +%% +%% +%% $Id: elsarticle.dtx 19 2009-12-17 07:07:52Z rishi $ +%% + \def\RCSfile{elsarticle}% + \def\RCSversion{1.20b}% + \def\RCSdate{2009/09/17}% + \def\@shortjnl{\relax} + \def\@journal{Elsevier Ltd} \def\@company{Elsevier Ltd} + \def\@issn{000-0000} + \def\@shortjid{elsarticle} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{\@shortjid}[\RCSdate, \RCSversion: \@journal] +\def\ABD{\AtBeginDocument} +\newif\ifpreprint \preprintfalse +\newif\iflongmktitle \longmktitlefalse + +\def\@blstr{1} +\newdimen\@bls +\@bls=\baselineskip + +\def\@finalWarning{% + *****************************************************\MessageBreak + This document is typeset in the CRC style which\MessageBreak + is not suitable for submission.\MessageBreak + \MessageBreak + Please typeset again using 'preprint' option\MessageBreak + for creating PDF suitable for submission.\MessageBreak + ******************************************************\MessageBreak +} + +\DeclareOption{preprint}{\global\preprinttrue + \gdef\@blstr{1}\xdef\jtype{0}% + \AtBeginDocument{\@twosidefalse\@mparswitchfalse}} +\DeclareOption{final}{\gdef\@blstr{1}\global\preprintfalse} +\DeclareOption{review}{\global\preprinttrue\gdef\@blstr{1.5}} +\DeclareOption{authoryear}{\xdef\@biboptions{round,authoryear}} +\DeclareOption{number}{\xdef\@biboptions{numbers}} +\DeclareOption{numbers}{\xdef\@biboptions{numbers}} +\DeclareOption{longtitle}{\global\longmktitletrue} +\DeclareOption{5p}{\xdef\jtype{5}\global\preprintfalse + \ExecuteOptions{twocolumn}} + \def\jtype{0} +\DeclareOption{3p}{\xdef\jtype{3}\global\preprintfalse} +\DeclareOption{1p}{\xdef\jtype{1}\global\preprintfalse + \AtBeginDocument{\@twocolumnfalse}} +\DeclareOption{times}{\IfFileExists{txfonts.sty}% + {\AtEndOfClass{\RequirePackage{txfonts}% + \gdef\ttdefault{cmtt}% + \let\iint\relax + \let\iiint\relax + \let\iiiint\relax + \let\idotsint\relax + \let\openbox\relax}}{\RequirePackage{times}}} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,number,preprint} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions +\LoadClass{article} +\RequirePackage{graphicx} +\let\comma\@empty +\let\tnotesep\@empty +\def\title#1{\gdef\@title{#1}} +\let\@title\@empty + +\def\elsLabel#1{\@bsphack\protected@write\@auxout{}% + {\string\Newlabel{#1}{\@currentlabel}}\@esphack} +\def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}} + +\def\elsRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}% +} + +\def\tnotemark[#1]{\textsuperscript{\@for\@@tmark:=#1\do{% + \edef\tnotenum{\@ifundefined{X@\@@tmark}{1}{\elsRef{\@@tmark}}}% + \ifcase\tnotenum\or\ding{73}\or,\ding{73}\ding{73}\fi}}% +} +\let\@tnotemark\@empty + +\let\@tnotes\@empty +\RequirePackage{pifont} +\newcounter{tnote} +\def\tnotetext[#1]#2{\g@addto@macro\@tnotes{% + \refstepcounter{tnote}\elsLabel{#1}% + \def\thefootnote{\ifcase\c@tnote\or\ding{73}\or\ding{73}\ding{73}\fi}% + \footnotetext{#2}}} + +\let\@nonumnotes\@empty +\def\nonumnote#1{\g@addto@macro\@nonumnotes{% + \let\thefootnote\relax\footnotetext{#1}}} + +\newcounter{fnote} +\def\fnmark[#1]{\let\comma\@empty + \def\@fnmark{\@for\@@fnmark:=#1\do{% + \edef\fnotenum{\@ifundefined{X@\@@fnmark}{1}{\elsRef{\@@fnmark}}}% + \unskip\comma\fnotenum\let\comma,}}% +} + +\let\@fnotes\@empty\let\@fnmark\@empty +\def\fntext[#1]#2{\g@addto@macro\@fnotes{% + \refstepcounter{fnote}\elsLabel{#1}% + \def\thefootnote{\thefnote}% + \global\setcounter{footnote}{\thefnote}% + \footnotetext{#2}}} + +\def\cormark[#1]{\edef\cnotenum{\elsRef{#1}}% + \unskip\textsuperscript{\sep\ifcase\cnotenum\or + $\ast$\or$\ast\ast$\fi\hspace{-1pt}}\let\sep=,} + +\let\@cormark\@empty +\let\@cornotes\@empty +\newcounter{cnote} +\def\cortext[#1]#2{\g@addto@macro\@cornotes{% + \refstepcounter{cnote}\elsLabel{#1}% + \def\thefootnote{\ifcase\thecnote\or$\ast$\or + $\ast\ast$\fi}% + \footnotetext{#2}}} + +\let\@corref\@empty +\def\corref#1{\edef\cnotenum{\elsRef{#1}}% + \edef\@corref{\ifcase\cnotenum\or + $\ast$\or$\ast\ast$\fi\hskip-1pt}} + +\def\fnref#1{\fnmark[#1]} +\def\tnoteref#1{\tnotemark[#1]} + +\def\resetTitleCounters{\c@cnote=0 + \c@fnote=0 \c@tnote=0 \c@footnote=0} + +\let\eadsep\@empty +\let\@elseads\@empty +\let\@elsuads\@empty +\let\@cormark\@empty +\def\hashchar{\expandafter\@gobble\string\~} +\def\underscorechar{\expandafter\@gobble\string\_} +\def\lbracechar{\expandafter\@gobble\string\{} +\def\rbracechar{\expandafter\@gobble\string\}} + +\def\ead{\@ifnextchar[{\@uad}{\@ead}} +\gdef\@ead#1{\bgroup\def\_{\string\underscorechar\space}% + \def\{{\string\lbracechar\space}% + \def~{\hashchar\space}% + \def\}{\string\rbracechar\space}% + \edef\tmp{\the\@eadauthor} + \immediate\write\@auxout{\string\emailauthor + {#1}{\expandafter\strip@prefix\meaning\tmp}}% + \egroup +} +\newcounter{ead} +\gdef\emailauthor#1#2{\stepcounter{ead}% + \g@addto@macro\@elseads{\raggedright% + \let\corref\@gobble + \eadsep\texttt{#1} (#2)\def\eadsep{\unskip,\space}}% +} +\gdef\@uad[#1]#2{\bgroup + \def~{\string\hashchar\space}% + \def\_{\string\underscorechar\space}% + \edef\tmp{\the\@eadauthor} + \immediate\write\@auxout{\string\urlauthor + {#2}{\expandafter\strip@prefix\meaning\tmp}}% + \egroup +} +\def\urlauthor#1#2{\g@addto@macro\@elsuads{\let\corref\@gobble% + \raggedright\eadsep\texttt{#1}\space(#2)% + \def\eadsep{\unskip,\space}}% +} + +\def\elsauthors{} +\def\pprinttitle{} +\let\authorsep\@empty +\let\sep\@empty +\newcounter{author} +\def\author{\@ifnextchar[{\@@author}{\@author}} + +\newtoks\@eadauthor +\def\@@author[#1]#2{\g@addto@macro\elsauthors{% + \def\baselinestretch{1}% + \authorsep#2\unskip\textsuperscript{%#1% + \@for\@@affmark:=#1\do{% + \edef\affnum{\@ifundefined{X@\@@affmark}{1}{\elsRef{\@@affmark}}}% + \unskip\sep\affnum\let\sep=,}% + \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi + \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi + }% + \def\authorsep{\unskip,\space}% + \global\let\sep\@empty\global\let\@corref\@empty + \global\let\@fnmark\@empty}% + \@eadauthor={#2} +} + +\def\@author#1{\g@addto@macro\elsauthors{\normalsize% + \def\baselinestretch{1}% + \upshape\authorsep#1\unskip\textsuperscript{% + \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi + \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi + }% + \def\authorsep{\unskip,\space}% + \global\let\@fnmark\@empty + \global\let\@corref\@empty + \global\let\sep\@empty}% + \@eadauthor={#1} +} + +\def\elsaddress{} +\def\addsep{\par\vskip6pt} +\def\address{\@ifnextchar[{\@@address}{\@address}} + +\def\@alph#1{% + \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or + l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or + y\or z% + \or aa\or ab\or ac\or ad\or ae\or af\or ag\or ah\or ai\or aj\or + ak\or al\or am\or an\or ao\or ap\or aq\or ar\or as\or at\or au\or + av\or aw\or ax\or ay\or az% + \or ba\or bb\or bc\or bd\or be\or bf\or bg\or bh\or bi\or bj\or + bk\or bl\or bm\or bn\or bo\or bp\or bq\or br\or bs\or bt\or bu\or + bv\or bw\or bx\or by\or bz% + \or ca\or cb\or cc\or cd\or ce\or cf\or cg\or ch\or ci\or cj\or + ck\or cl\or cm\or cn\or co\or cp\or cq\or cr\or cs\or ct\or cu\or + cv\or cw\or cx\or cy\or cz% + \or da\or db\or dc\or dd\or de\or df\or dg\or dh\or di\or dj\or + dk\or dl\or dm\or dn\or do\or dp\or dq\or dr\or ds\or dt\or du\or + dv\or dw\or dx\or dy\or dz% + \or ea\or eb\or ec\or ed\or ee\or ef\or eg\or eh\or ei\or ej\or + ek\or el\or em\or en\or eo\or ep\or eq\or er\or es\or et\or eu\or + ev\or ew\or ex\or ey\or ez% + \or fa\or fb\or fc\or fd\or fe\or ff\or fg\or fh\or fi\or fj\or + fk\or fl\or fm\or fn\or fo\or fp\or fq\or fr\or fs\or ft\or fu\or + fv\or fw\or fx\or fy\or fz% + \or ga\or gb\or gc\or gd\or ge\or gf\or gg\or gh\or gi\or gj\or + gk\or gl\or gm\or gn\or go\or gp\or gq\or gr\or gs\or gt\or gu\or + gv\or gw\or gx\or gy\or gz% + \else\@ctrerr\fi} + +\newcounter{affn} +\renewcommand\theaffn{\alph{affn}} + +\long\def\@@address[#1]#2{\g@addto@macro\elsaddress{% + \def\baselinestretch{1}% + \refstepcounter{affn} + \xdef\@currentlabel{\theaffn} + \elsLabel{#1}% + \textsuperscript{\theaffn}#2\par}} + +\long\def\@address#1{\g@addto@macro\elsauthors{% + \def\baselinestretch{1}% + \addsep\footnotesize\itshape#1\def\addsep{\par\vskip6pt}% + \def\authorsep{\par\vskip8pt}}} + +\newbox\absbox +\renewenvironment{abstract}{\global\setbox\absbox=\vbox\bgroup + \hsize=\textwidth\def\baselinestretch{1}% + \noindent\unskip\textbf{Abstract} + \par\medskip\noindent\unskip\ignorespaces} + {\egroup} + +\newbox\keybox +\def\keyword{% + \def\sep{\unskip, }% + \def\MSC{\@ifnextchar[{\@MSC}{\@MSC[2000]}} + \def\@MSC[##1]{\par\leavevmode\hbox {\it ##1~MSC:\space}}% + \def\PACS{\par\leavevmode\hbox {\it PACS:\space}}% + \def\JEL{\par\leavevmode\hbox {\it JEL:\space}}% + \global\setbox\keybox=\vbox\bgroup\hsize=\textwidth + \normalsize\normalfont\def\baselinestretch{1} + \parskip\z@ + \noindent\textit{Keywords: } + \raggedright % Keywords are not justified. + \ignorespaces} +\def\endkeyword{\par \egroup} + +\newdimen\Columnwidth +\Columnwidth=\columnwidth + +\def\printFirstPageNotes{% + \iflongmktitle + \let\columnwidth=\textwidth\fi + \ifx\@tnotes\@empty\else\@tnotes\fi + \ifx\@nonumnotes\@empty\else\@nonumnotes\fi + \ifx\@cornotes\@empty\else\@cornotes\fi + \ifx\@elseads\@empty\relax\else + \let\thefootnote\relax + \footnotetext{\ifnum\theead=1\relax + \textit{Email address:\space}\else + \textit{Email addresses:\space}\fi + \@elseads}\fi + \ifx\@elsuads\@empty\relax\else + \let\thefootnote\relax + \footnotetext{\textit{URL:\space}% + \@elsuads}\fi + \ifx\@fnotes\@empty\else\@fnotes\fi + \iflongmktitle\if@twocolumn + \let\columnwidth=\Columnwidth\fi\fi +} + +\long\def\pprintMaketitle{\clearpage + \iflongmktitle\if@twocolumn\let\columnwidth=\textwidth\fi\fi + \resetTitleCounters + \def\baselinestretch{1}% + \printFirstPageNotes + \begin{center}% + \thispagestyle{pprintTitle}% + \def\baselinestretch{1}% + \Large\@title\par\vskip18pt + \normalsize\elsauthors\par\vskip10pt + \footnotesize\itshape\elsaddress\par\vskip36pt + \hrule\vskip12pt + \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi + \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi + \hrule\vskip12pt + \end{center}% + \gdef\thefootnote{\arabic{footnote}}% + } + +\def\printWarning{% + \mbox{}\par\vfill\par\bgroup + \fboxsep12pt\fboxrule1pt + \hspace*{.18\textwidth} + \fcolorbox{gray50}{gray10}{\box\warnbox} + \egroup\par\vfill\thispagestyle{empty} + \setcounter{page}{0} + \clearpage} + +\long\def\finalMaketitle{% + \resetTitleCounters + \def\baselinestretch{1}% + \MaketitleBox + \thispagestyle{pprintTitle}% + \gdef\thefootnote{\arabic{footnote}}% + } + +\long\def\MaketitleBox{% + \resetTitleCounters + \def\baselinestretch{1}% + \begin{center}% + \def\baselinestretch{1}% + \Large\@title\par\vskip18pt + \normalsize\elsauthors\par\vskip10pt + \footnotesize\itshape\elsaddress\par\vskip36pt + \hrule\vskip12pt + \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi + \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi + \hrule\vskip12pt + \end{center}% + } + +\def\FNtext#1{\par\bgroup\footnotesize#1\egroup} +\newdimen\space@left +\def\alarm#1{\typeout{******************************}% + \typeout{#1}% + \typeout{******************************}% +} +\long\def\getSpaceLeft{%\global\@twocolumnfalse% + \global\setbox0=\vbox{\hsize=\textwidth\MaketitleBox}% + \global\setbox1=\vbox{\hsize=\textwidth + \let\footnotetext\FNtext + \printFirstPageNotes}% + \xdef\noteheight{\the\ht1}% + \xdef\titleheight{\the\ht0}% + \@tempdima=\vsize + \advance\@tempdima-\noteheight + \advance\@tempdima-1\baselineskip +} + + \skip\footins=24pt + +\newbox\els@boxa +\newbox\els@boxb + +\ifpreprint + \def\maketitle{\pprintMaketitle} + \else + \ifnum\jtype=1 + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \box0% + \else + \finalMaketitle\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \else + \ifnum\jtype=5 + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \twocolumn[\box0]%\printFirstPageNotes + \else + \twocolumn[\finalMaketitle]\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}} + \else + \if@twocolumn + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \twocolumn[\box0]% + \else + \twocolumn[\finalMaketitle]\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \else + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \box0% + \else + \finalMaketitle\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \fi + \fi + \fi +\fi +\def\ps@pprintTitle{% + \let\@oddhead\@empty + \let\@evenhead\@empty + \def\@oddfoot{\footnotesize\itshape + Preprint submitted to \ifx\@journal\@empty Elsevier + \else\@journal\fi\hfill\today}% + \let\@evenfoot\@oddfoot} +\def\@seccntDot{.} +\def\@seccntformat#1{\csname the#1\endcsname\@seccntDot\hskip 0.5em} + +\renewcommand\section{\@startsection {section}{1}{\z@}% + {18\p@ \@plus 6\p@ \@minus 3\p@}% + {9\p@ \@plus 6\p@ \@minus 3\p@}% + {\normalsize\bfseries\boldmath}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {12\p@ \@plus 6\p@ \@minus 3\p@}% + {3\p@ \@plus 6\p@ \@minus 3\p@}% + {\normalfont\normalsize\itshape}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {12\p@ \@plus 6\p@ \@minus 3\p@}% + {\p@}% + {\normalfont\normalsize\itshape}} + +\def\paragraph{\secdef{\els@aparagraph}{\els@bparagraph}} +\def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2.}} +\def\els@bparagraph#1{\elsparagraph*{#1.}} + +\newcommand\elsparagraph{\@startsection{paragraph}{4}{0\z@}% + {10\p@ \@plus 6\p@ \@minus 3\p@}% + {-6\p@}% + {\normalfont\itshape}} +\newdimen\leftMargin +\leftMargin=2em +\newtoks\@enLab %\newtoks\@enfont +\def\@enQmark{?} +\def\@enLabel#1#2{% + \edef\@enThe{\noexpand#1{\@enumctr}}% + \@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}% + \@enloop} +\def\@enSpace{\afterassignment\@enSp@ce\let\@tempa= } +\def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop} +\def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop} +\def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop} +\def\@enloop{\futurelet\@entemp\@enloop@} +\def\@enloop@{% + \ifx A\@entemp \def\@tempa{\@enLabel\Alph }\else + \ifx a\@entemp \def\@tempa{\@enLabel\alph }\else + \ifx i\@entemp \def\@tempa{\@enLabel\roman }\else + \ifx I\@entemp \def\@tempa{\@enLabel\Roman }\else + \ifx 1\@entemp \def\@tempa{\@enLabel\arabic}\else + \ifx \@sptoken\@entemp \let\@tempa\@enSpace \else + \ifx \bgroup\@entemp \let\@tempa\@enGroup \else + \ifx \@enum@\@entemp \let\@tempa\@gobble \else + \let\@tempa\@enOther + \fi\fi\fi\fi\fi\fi\fi\fi + \@tempa} +\newlength{\@sep} \newlength{\@@sep} +\setlength{\@sep}{.5\baselineskip plus.2\baselineskip + minus.2\baselineskip} +\setlength{\@@sep}{.1\baselineskip plus.01\baselineskip + minus.05\baselineskip} +\providecommand{\sfbc}{\rmfamily\upshape} +\providecommand{\sfn}{\rmfamily\upshape} +\def\@enfont{\ifnum \@enumdepth >1\let\@nxt\sfn \else\let\@nxt\sfbc \fi\@nxt} +\def\enumerate{% + \ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi + \@ifnextchar[{\@@enum@}{\@enum@}} +\def\@@enum@[#1]{% + \@enLab{}\let\@enThe\@enQmark + \@enloop#1\@enum@ + \ifx\@enThe\@enQmark\@warning{The counter will not be printed.% + ^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi + \expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}% + \expandafter\let\csname the\@enumctr\endcsname\@enThe + \csname c@\@enumctr\endcsname7 + \expandafter\settowidth + \csname leftmargin\romannumeral\@enumdepth\endcsname + {\the\@enLab\hskip\labelsep}% + \@enum@} +\def\@enum@{\list{{\@enfont\csname label\@enumctr\endcsname}}% + {\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}% + \ifnum \@enumdepth>1\setlength{\topsep}{\@@sep}\else + \setlength{\topsep}{\@sep}\fi + \ifnum \@enumdepth>1\setlength{\itemsep}{0pt plus1pt minus1pt}% + \else \setlength{\itemsep}{\@@sep}\fi + %\setlength\leftmargin{\leftMargin}%%%{1.8em} + \setlength{\parsep}{0pt plus1pt minus1pt}% + \setlength{\parskip}{0pt plus1pt minus1pt} + }} + +\def\endenumerate{\par\ifnum \@enumdepth >1\addvspace{\@@sep}\else + \addvspace{\@sep}\fi \endlist} + +\def\sitem{\@noitemargtrue\@item[\@itemlabel *]} + +\def\itemize{\@ifnextchar[{\@Itemize}{\@Itemize[]}} + +\def\@Itemize[#1]{\def\next{#1}% + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \ifx\next\@empty\else\expandafter\def\csname + labelitem\romannumeral\the\@itemdepth\endcsname{#1}\fi% + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter\list\csname\@itemitem\endcsname + {\def\makelabel##1{\hss\llap{##1}}}% + \fi} +\def\newdefinition#1{% + \@ifnextchar[{\@odfn{#1}}{\@ndfn{#1}}}%] +\def\@ndfn#1#2{% + \@ifnextchar[{\@xndfn{#1}{#2}}{\@yndfn{#1}{#2}}} +\def\@xndfn#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@dfncountersep + \@dfncounter{#1}}% + \global\@namedef{#1}{\@dfn{#1}{#2}}% + \global\@namedef{end#1}{\@enddefinition}}} +\def\@yndfn#1#2{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@dfncounter{#1}}% + \global\@namedef{#1}{\@dfn{#1}{#2}}% + \global\@namedef{end#1}{\@enddefinition}}} +\def\@odfn#1[#2]#3{% + \@ifundefined{c@#2}{\@nocounterr{#2}}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{the#1}{\@nameuse{the#2}} + \global\@namedef{#1}{\@dfn{#2}{#3}}% + \global\@namedef{end#1}{\@enddefinition}}}} +\def\@dfn#1#2{% + \refstepcounter{#1}% + \@ifnextchar[{\@ydfn{#1}{#2}}{\@xdfn{#1}{#2}}} +\def\@xdfn#1#2{% + \@begindefinition{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@ydfn#1#2[#3]{% + \@opargbegindefinition{#2}{\csname the#1\endcsname}{#3}\ignorespaces} +\def\@dfncounter#1{\noexpand\arabic{#1}} +\def\@dfncountersep{.} +\def\@begindefinition#1#2{\trivlist + \item[\hskip\labelsep{\bfseries #1\ #2.}]\upshape} +\def\@opargbegindefinition#1#2#3{\trivlist + \item[\hskip\labelsep{\bfseries #1\ #2\ (#3).}]\upshape} +\def\@enddefinition{\endtrivlist} + +\def\@begintheorem#1#2{\trivlist + \let\baselinestretch\@blstr + \item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape} +\def\@opargbegintheorem#1#2#3{\trivlist + \let\baselinestretch\@blstr + \item[\hskip \labelsep{\bfseries #1\ #2\ (#3).}]\itshape} + +\def\newproof#1{% + \@ifnextchar[{\@oprf{#1}}{\@nprf{#1}}} +\def\@nprf#1#2{% + \@ifnextchar[{\@xnprf{#1}{#2}}{\@ynprf{#1}{#2}}} +\def\@xnprf#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@prfcountersep + \@prfcounter{#1}}% + \global\@namedef{#1}{\@prf{#1}{#2}}% + \global\@namedef{end#1}{\@endproof}}} +\def\@ynprf#1#2{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@prfcounter{#1}}% + \global\@namedef{#1}{\@prf{#1}{#2}}% + \global\@namedef{end#1}{\@endproof}}} +\def\@oprf#1[#2]#3{% + \@ifundefined{c@#2}{\@nocounterr{#2}}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{the#1}{\@nameuse{the#2}}% + \global\@namedef{#1}{\@prf{#2}{#3}}% + \global\@namedef{end#1}{\@endproof}}}} +\def\@prf#1#2{% + \refstepcounter{#1}% + \@ifnextchar[{\@yprf{#1}{#2}}{\@xprf{#1}{#2}}} +\def\@xprf#1#2{% + \@beginproof{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@yprf#1#2[#3]{% + \@opargbeginproof{#2}{\csname the#1\endcsname}{#3}\ignorespaces} +\def\@prfcounter#1{\noexpand\arabic{#1}} +\def\@prfcountersep{.} +\def\@beginproof#1#2{\trivlist\let\baselinestretch\@blstr + \item[\hskip \labelsep{\scshape #1.}]\rmfamily} +\def\@opargbeginproof#1#2#3{\trivlist\let\baselinestretch\@blstr + \item[\hskip \labelsep{\scshape #1\ (#3).}]\rmfamily} +\def\@endproof{\endtrivlist} +\newcommand*{\qed}{\hbox{}\hfill$\Box$} + +\@ifundefined{@biboptions}{\xdef\@biboptions{numbers}}{} +\InputIfFileExists{\jobname.spl}{}{} +\RequirePackage[\@biboptions]{natbib} + +\newwrite\splwrite +\immediate\openout\splwrite=\jobname.spl +\def\biboptions#1{\def\next{#1}\immediate\write\splwrite{% + \string\g@addto@macro\string\@biboptions{% + ,\expandafter\strip@prefix\meaning\next}}} + +\let\baselinestretch=\@blstr + +\ifnum\jtype=1 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=562pt, + textwidth=384pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=12pt, + footnotesep=24pt plus 2pt minus 12pt, + } + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \if@twocolumn\global\@twocolumnfalse\fi +\else\ifnum\jtype=3 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=622pt, + textwidth=468pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=18pt, + footnotesep=24pt plus 2pt minus 12pt, + columnsep=2pc + } + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \if@twocolumn\input{fleqn.clo}\fi +\else\ifnum\jtype=5 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=682pt, + textwidth=522pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=18pt, + footnotesep=24pt plus 2pt minus 12pt, + columnsep=18pt + }% + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \input{fleqn.clo} + \global\@twocolumntrue +%% +%% End of option '5p' +%% +\fi\fi\fi +\def\journal#1{\gdef\@journal{#1}} + \let\@journal\@empty +\newenvironment{frontmatter}{}{\maketitle} + +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip\footnotesize + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\AtBeginDocument{\@ifpackageloaded{hyperref} + {\def\@linkcolor{blue} + \def\@anchorcolor{blue} + \def\@citecolor{blue} + \def\@filecolor{blue} + \def\@urlcolor{blue} + \def\@menucolor{blue} + \def\@pagecolor{blue} +\begingroup + \@makeother\`% + \@makeother\=% + \edef\x{% + \edef\noexpand\x{% + \endgroup + \noexpand\toks@{% + \catcode 96=\noexpand\the\catcode`\noexpand\`\relax + \catcode 61=\noexpand\the\catcode`\noexpand\=\relax + }% + }% + \noexpand\x + }% +\x +\@makeother\` +\@makeother\= +}{}} +%% +\def\appendixname{Appendix } +\renewcommand\appendix{\par + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{equation}{0} + \gdef\thefigure{\@Alph\c@section.\arabic{figure}}% + \gdef\thetable{\@Alph\c@section.\arabic{table}}% + \gdef\thesection{\appendixname~\@Alph\c@section}% + \@addtoreset{equation}{section}% + \gdef\theequation{\@Alph\c@section.\arabic{equation}}% + \addtocontents{toc}{\string\let\string\numberline\string\tmptocnumberline}{}{} +} + +%%%% \numberline width calculation for appendix. +\newdimen\appnamewidth +\def\tmptocnumberline#1{% + \setbox0=\hbox{\appendixname} + \appnamewidth=\wd0 + \addtolength\appnamewidth{2.5pc} + \hb@xt@\appnamewidth{#1\hfill} +} + +%% Added for work with amsrefs.sty + +\@ifpackageloaded{amsrefs}% + {} + {%\let\bibsection\relax% + \AtBeginDocument{\def\cites@b#1#2,#3{% + \begingroup[% + \toks@{\InnerCite{#2}#1}% + \ifx\@empty#3\@xp\@gobble\fi + \cites@c#3% +}}} +%% +%% Added for avoiding clash with cleveref.sty + +\@ifpackageloaded{cleveref}% + {} + {\def\tnotetext[#1]#2{\g@addto@macro\@tnotes{% + \refstepcounter{tnote}% + \immediate\write\@auxout{\string\Newlabel{#1}{\thetnote}} + \def\thefootnote{\ifcase\c@tnote\or\ding{73}\or\ding{73}\ding{73}\fi}% + \footnotetext{#2}}} +%%% + \def\fntext[#1]#2{\g@addto@macro\@fnotes{% + \refstepcounter{fnote}% + \immediate\write\@auxout{\string\Newlabel{#1}{\thefnote}} + \def\thefootnote{\thefnote}% + \global\setcounter{footnote}{\thefnote}% + \footnotetext{#2}}} +%%% + \def\cortext[#1]#2{\g@addto@macro\@cornotes{% + \refstepcounter{cnote}% + \immediate\write\@auxout{\string\Newlabel{#1}{\thecnote}} + \def\thefootnote{\ifcase\thecnote\or$\ast$\or + $\ast\ast$\fi}% + \footnotetext{#2}}} +} +\endinput +%% +%% End of file `elsarticle.cls'. + diff --git a/elsarticle.dtx b/elsarticle.dtx new file mode 100644 index 0000000..3ea78d9 --- /dev/null +++ b/elsarticle.dtx @@ -0,0 +1,882 @@ +% \iffalse meta-comment +% +% Copyright (C) 2007, 2008, 2009 by Elsevier Ltd +% ----------------------------------------------- +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% \fi +% \CheckSum{2196} +% +% \iffalse +%<*driver> +\documentclass{ltxdoc} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\usepackage{comment} +\begin{document} + \DocInput{elsarticle.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi +% +% \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 \~} +% +% +% \changes{v1.1}{2008/09/25}{Initial version} +% +% +% \changes{v1.2}{2009/09/17}{Documentation, templates, and *.bst +% has been seperated from this .dtx. Incompatibility problems +% with amsref.sty, fncylab.sty have been fixed. Some bugs related +% to author/affiliation part have been fixed.} +% +% \GetFileInfo{elsarticle.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment} +% +% +% \title{The \textsf{elsarticle.cls} -- Implimentation} +% \author{Elsevier Ltd} +% +% \maketitle +% +% \StopEventually{} +% +% \section{Implementation} +% +% \begin{macrocode} +%<*class> +%% +%% $Id: elsarticle.cls,v 1.20 2008-10-13 04:24:12 cvr Exp $ +%% + \def\RCSfile{elsarticle}% + \def\RCSversion{1.2.0}% + \def\RCSdate{2009/09/17}% + \def\@shortjnl{\relax} + \def\@journal{Elsevier Ltd} \def\@company{Elsevier Ltd} + \def\@issn{000-0000} + \def\@shortjid{elsarticle} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{\@shortjid}[\RCSdate, \RCSversion: \@journal] +\def\ABD{\AtBeginDocument} +\newif\ifpreprint \preprintfalse +\newif\iflongmktitle \longmktitlefalse + +\def\@blstr{1} +\newdimen\@bls +\@bls=\baselineskip + +\def\@finalWarning{% + *****************************************************\MessageBreak + This document is typeset in the CRC style which\MessageBreak + is not suitable for submission.\MessageBreak + \MessageBreak + Please typeset again using 'preprint' option\MessageBreak + for creating PDF suitable for submission.\MessageBreak + ******************************************************\MessageBreak +} + +\DeclareOption{preprint}{\global\preprinttrue + \gdef\@blstr{1}\xdef\jtype{0}% + \AtBeginDocument{\@twosidefalse\@mparswitchfalse}} +\DeclareOption{final}{\gdef\@blstr{1}\global\preprintfalse} +\DeclareOption{review}{\global\preprinttrue\gdef\@blstr{1.5}} +\DeclareOption{authoryear}{\xdef\@biboptions{round,authoryear}} +\DeclareOption{number}{\xdef\@biboptions{numbers}} +\DeclareOption{numbers}{\xdef\@biboptions{numbers}} +\DeclareOption{longtitle}{\global\longmktitletrue} +\DeclareOption{5p}{\xdef\jtype{5}\global\preprintfalse + \ExecuteOptions{twocolumn}} + \def\jtype{0} +\DeclareOption{3p}{\xdef\jtype{3}\global\preprintfalse} +\DeclareOption{1p}{\xdef\jtype{1}\global\preprintfalse + \AtBeginDocument{\@twocolumnfalse}} +\DeclareOption{times}{\IfFileExists{txfonts.sty}% + {\AtEndOfClass{\RequirePackage{txfonts}% + \gdef\ttdefault{cmtt}% + \let\iint\relax + \let\iiint\relax + \let\iiiint\relax + \let\idotsint\relax + \let\openbox\relax}}{\RequirePackage{times}}} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,number,preprint} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions +\LoadClass{article} +\RequirePackage{graphicx} +% \end{macrocode} +% +% \section{Preamble} +% +% \begin{macrocode} +\let\comma\@empty +\let\tnotesep\@empty +\def\title#1{\gdef\@title{#1}} +\let\@title\@empty + +\def\elsLabel#1{\@bsphack\protected@write\@auxout{}% + {\string\Newlabel{#1}{\@currentlabel}}\@esphack} +\def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}} + +\def\elsRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}% +} + +\def\tnotemark[#1]{\textsuperscript{\@for\@@tmark:=#1\do{% + \edef\tnotenum{\@ifundefined{X@\@@tmark}{1}{\elsRef{\@@tmark}}}% + \ifcase\tnotenum\or\ding{73}\or,\ding{73}\ding{73}\fi}}% +} +\let\@tnotemark\@empty + +\let\@tnotes\@empty +\RequirePackage{pifont} +\newcounter{tnote} +\def\tnotetext[#1]#2{\g@addto@macro\@tnotes{% + \refstepcounter{tnote}\elsLabel{#1}% + \def\thefootnote{\ifcase\c@tnote\or\ding{73}\or\ding{73}\ding{73}\fi}% + \footnotetext{#2}}} + +\let\@nonumnotes\@empty +\def\nonumnote#1{\g@addto@macro\@nonumnotes{% + \let\thefootnote\relax\footnotetext{#1}}} + +\newcounter{fnote} +\def\fnmark[#1]{\let\comma\@empty + \def\@fnmark{\@for\@@fnmark:=#1\do{% + \edef\fnotenum{\@ifundefined{X@\@@fnmark}{1}{\elsRef{\@@fnmark}}}% + \unskip\comma\fnotenum\let\comma,}}% +} + +\let\@fnotes\@empty\let\@fnmark\@empty +\def\fntext[#1]#2{\g@addto@macro\@fnotes{% + \refstepcounter{fnote}\elsLabel{#1}% + \def\thefootnote{\thefnote}% + \global\setcounter{footnote}{\thefnote}% + \footnotetext{#2}}} + +\def\cormark[#1]{\edef\cnotenum{\elsRef{#1}}% + \unskip\textsuperscript{\sep\ifcase\cnotenum\or + $\ast$\or$\ast\ast$\fi\hspace{-1pt}}\let\sep=,} + +\let\@cormark\@empty +\let\@cornotes\@empty +\newcounter{cnote} +\def\cortext[#1]#2{\g@addto@macro\@cornotes{% + \refstepcounter{cnote}\elsLabel{#1}% + \def\thefootnote{\ifcase\thecnote\or$\ast$\or + $\ast\ast$\fi}% + \footnotetext{#2}}} + +\let\@corref\@empty +%\def\corref#1{\cormark[#1]} +\def\corref#1{\edef\cnotenum{\elsRef{#1}}% + \edef\@corref{\ifcase\cnotenum\or + $\ast$\or$\ast\ast$\fi\hskip-1pt}} + +\def\fnref#1{\fnmark[#1]} +\def\tnoteref#1{\tnotemark[#1]} + +\def\resetTitleCounters{\c@cnote=0 + \c@fnote=0 \c@tnote=0 \c@footnote=0} + +\let\eadsep\@empty +\let\@elseads\@empty +\let\@elsuads\@empty +\let\@cormark\@empty +\def\hashchar{\expandafter\@gobble\string\~} +\def\underscorechar{\expandafter\@gobble\string\_} +\def\lbracechar{\expandafter\@gobble\string\{} +\def\rbracechar{\expandafter\@gobble\string\}} + +\def\ead{\@ifnextchar[{\@uad}{\@ead}} +\gdef\@ead#1{\bgroup\def\_{\string\underscorechar\space}% + \def\{{\string\lbracechar\space}% + \def~{\hashchar\space}% + \def\}{\string\rbracechar\space}% + \edef\tmp{\the\@eadauthor} + \immediate\write\@auxout{\string\emailauthor + {#1}{\expandafter\strip@prefix\meaning\tmp}}% + \egroup +} +\newcounter{ead} +\gdef\emailauthor#1#2{\stepcounter{ead}% + \g@addto@macro\@elseads{\raggedright% + \let\corref\@gobble + \eadsep\texttt{#1} (#2)\def\eadsep{\unskip,\space}}% +} +\gdef\@uad[#1]#2{\bgroup + \def~{\string\hashchar\space}% + \def\_{\string\underscorechar\space}% + \edef\tmp{\the\@eadauthor} + \immediate\write\@auxout{\string\urlauthor + {#2}{\expandafter\strip@prefix\meaning\tmp}}% + \egroup +} +\def\urlauthor#1#2{\g@addto@macro\@elsuads{\let\corref\@gobble% + \raggedright\eadsep\texttt{#1}\space(#2)% + \def\eadsep{\unskip,\space}}% +} + +\def\elsauthors{} +\def\pprinttitle{} +\let\authorsep\@empty +\let\sep\@empty +\newcounter{author} +\def\author{\@ifnextchar[{\@@author}{\@author}} + +\newtoks\@eadauthor +\def\@@author[#1]#2{\g@addto@macro\elsauthors{% + \def\baselinestretch{1}% + \authorsep#2\unskip\textsuperscript{%#1% + \@for\@@affmark:=#1\do{% + \edef\affnum{\@ifundefined{X@\@@affmark}{1}{\elsRef{\@@affmark}}}% + \unskip\sep\affnum\let\sep=,}% + \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi + \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi + }% + \def\authorsep{\unskip,\space}% + \global\let\sep\@empty\global\let\@corref\@empty + \global\let\@fnmark\@empty}% + \@eadauthor={#2} +} + +\def\@author#1{\g@addto@macro\elsauthors{\normalsize% + \def\baselinestretch{1}% + \upshape\authorsep#1\unskip\textsuperscript{% + \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi + \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi + }% + \def\authorsep{\unskip,\space}% + \global\let\@fnmark\@empty + \global\let\sep\@empty}% + \@eadauthor={#1} +} + +\def\elsaddress{} +\def\addsep{\par\vskip6pt} +\def\address{\@ifnextchar[{\@@address}{\@address}} + +\def\@alph#1{% + \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or + l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or + y\or z% + \or aa\or ab\or ac\or ad\or ae\or af\or ag\or ah\or ai\or aj\or + ak\or al\or am\or an\or ao\or ap\or aq\or ar\or as\or at\or au\or + av\or aw\or ax\or ay\or az% + \or ba\or bb\or bc\or bd\or be\or bf\or bg\or bh\or bi\or bj\or + bk\or bl\or bm\or bn\or bo\or bp\or bq\or br\or bs\or bt\or bu\or + bv\or bw\or bx\or by\or bz% + \or ca\or cb\or cc\or cd\or ce\or cf\or cg\or ch\or ci\or cj\or + ck\or cl\or cm\or cn\or co\or cp\or cq\or cr\or cs\or ct\or cu\or + cv\or cw\or cx\or cy\or cz% + \or da\or db\or dc\or dd\or de\or df\or dg\or dh\or di\or dj\or + dk\or dl\or dm\or dn\or do\or dp\or dq\or dr\or ds\or dt\or du\or + dv\or dw\or dx\or dy\or dz% + \or ea\or eb\or ec\or ed\or ee\or ef\or eg\or eh\or ei\or ej\or + ek\or el\or em\or en\or eo\or ep\or eq\or er\or es\or et\or eu\or + ev\or ew\or ex\or ey\or ez% + \or fa\or fb\or fc\or fd\or fe\or ff\or fg\or fh\or fi\or fj\or + fk\or fl\or fm\or fn\or fo\or fp\or fq\or fr\or fs\or ft\or fu\or + fv\or fw\or fx\or fy\or fz% + \or ga\or gb\or gc\or gd\or ge\or gf\or gg\or gh\or gi\or gj\or + gk\or gl\or gm\or gn\or go\or gp\or gq\or gr\or gs\or gt\or gu\or + gv\or gw\or gx\or gy\or gz% + \else\@ctrerr\fi} + +\newcounter{affn} +\renewcommand\theaffn{\alph{affn}} + +\long\def\@@address[#1]#2{\g@addto@macro\elsaddress{% + \def\baselinestretch{1}% + \refstepcounter{affn} + \xdef\@currentlabel{\theaffn} + \elsLabel{#1}% + \textsuperscript{\theaffn}#2\par}} + +\long\def\@address#1{\g@addto@macro\elsauthors{% + \def\baselinestretch{1}% + \addsep\footnotesize\itshape#1\def\addsep{\par\vskip6pt}% + \def\authorsep{\par\vskip8pt}}} + +\newbox\absbox +\renewenvironment{abstract}{\global\setbox\absbox=\vbox\bgroup + \hsize=\textwidth\def\baselinestretch{1}% + \noindent\unskip\textbf{Abstract} + \par\medskip\noindent\unskip\ignorespaces} + {\egroup} + +\newbox\keybox +\def\keyword{% + \def\sep{\unskip, }% + \def\MSC{\@ifnextchar[{\@MSC}{\@MSC[2000]}} + \def\@MSC[##1]{\par\leavevmode\hbox {\it ##1~MSC:\space}}% + \def\PACS{\par\leavevmode\hbox {\it PACS:\space}}% + \def\JEL{\par\leavevmode\hbox {\it JEL:\space}}% + \global\setbox\keybox=\vbox\bgroup\hsize=\textwidth + \normalsize\normalfont\def\baselinestretch{1} + \parskip\z@ + \noindent\textit{Keywords: } + \raggedright % Keywords are not justified. + \ignorespaces} +\def\endkeyword{\par \egroup} + +\newdimen\Columnwidth +\Columnwidth=\columnwidth + +\def\printFirstPageNotes{% + \iflongmktitle + \let\columnwidth=\textwidth\fi + \ifx\@tnotes\@empty\else\@tnotes\fi + \ifx\@nonumnotes\@empty\else\@nonumnotes\fi + \ifx\@cornotes\@empty\else\@cornotes\fi + \ifx\@elseads\@empty\relax\else + \let\thefootnote\relax + \footnotetext{\ifnum\theead=1\relax + \textit{Email address:\space}\else + \textit{Email addresses:\space}\fi + \@elseads}\fi + \ifx\@elsuads\@empty\relax\else + \let\thefootnote\relax + \footnotetext{\textit{URL:\space}% + \@elsuads}\fi + \ifx\@fnotes\@empty\else\@fnotes\fi + \iflongmktitle\if@twocolumn + \let\columnwidth=\Columnwidth\fi\fi +} + +\long\def\pprintMaketitle{\clearpage + \iflongmktitle\if@twocolumn\let\columnwidth=\textwidth\fi\fi + \resetTitleCounters + \def\baselinestretch{1}% + \printFirstPageNotes + \begin{center}% + \thispagestyle{pprintTitle}% + \def\baselinestretch{1}% + \Large\@title\par\vskip18pt + \normalsize\elsauthors\par\vskip10pt + \footnotesize\itshape\elsaddress\par\vskip36pt + \hrule\vskip12pt + \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi + \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi + \hrule\vskip12pt + \end{center}% + \gdef\thefootnote{\arabic{footnote}}% + } + +\def\printWarning{% + \mbox{}\par\vfill\par\bgroup + \fboxsep12pt\fboxrule1pt + \hspace*{.18\textwidth} + \fcolorbox{gray50}{gray10}{\box\warnbox} + \egroup\par\vfill\thispagestyle{empty} + \setcounter{page}{0} + \clearpage} + +\long\def\finalMaketitle{% + \resetTitleCounters + \def\baselinestretch{1}% + \MaketitleBox + \thispagestyle{pprintTitle}% + \gdef\thefootnote{\arabic{footnote}}% + } + +\long\def\MaketitleBox{% + \resetTitleCounters + \def\baselinestretch{1}% + \begin{center}% + \def\baselinestretch{1}% + \Large\@title\par\vskip18pt + \normalsize\elsauthors\par\vskip10pt + \footnotesize\itshape\elsaddress\par\vskip36pt + \hrule\vskip12pt + \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi + \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi + \hrule\vskip12pt + \end{center}% + } + +\def\FNtext#1{\par\bgroup\footnotesize#1\egroup} +\newdimen\space@left +\def\alarm#1{\typeout{******************************}% + \typeout{#1}% + \typeout{******************************}% +} +\long\def\getSpaceLeft{%\global\@twocolumnfalse% + \global\setbox0=\vbox{\hsize=\textwidth\MaketitleBox}% + \global\setbox1=\vbox{\hsize=\textwidth + \let\footnotetext\FNtext + \printFirstPageNotes}% + \xdef\noteheight{\the\ht1}% + \xdef\titleheight{\the\ht0}% + \@tempdima=\vsize + \advance\@tempdima-\noteheight + \advance\@tempdima-1\baselineskip +} + + \skip\footins=24pt + +\newbox\els@boxa +\newbox\els@boxb + +\ifpreprint + \def\maketitle{\pprintMaketitle} + \else + \ifnum\jtype=1 + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \box0% + \else + \finalMaketitle\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \else + \ifnum\jtype=5 + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \twocolumn[\box0]%\printFirstPageNotes + \else + \twocolumn[\finalMaketitle]\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}} + \else + \if@twocolumn + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \twocolumn[\box0]% + \else + \twocolumn[\finalMaketitle]\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \else + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \box0% + \else + \finalMaketitle\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \fi + \fi + \fi +\fi +% \end{macrocode} +% +%\section{Headers/footers} +% +% \begin{macrocode} +\def\ps@pprintTitle{% + \let\@oddhead\@empty + \let\@evenhead\@empty + \def\@oddfoot{\footnotesize\itshape + Preprint submitted to \ifx\@journal\@empty Elsevier + \else\@journal\fi\hfill\today}% + \let\@evenfoot\@oddfoot} +% \end{macrocode} +% +% \section{Section headings} +% +% \begin{macrocode} +\def\@seccntDot{.} +\def\@seccntformat#1{\csname the#1\endcsname\@seccntDot\hskip 0.5em} + +\renewcommand\section{\@startsection {section}{1}{\z@}% + {18\p@ \@plus 6\p@ \@minus 3\p@}% + {9\p@ \@plus 6\p@ \@minus 3\p@}% + {\normalsize\bfseries\boldmath}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {12\p@ \@plus 6\p@ \@minus 3\p@}% + {3\p@ \@plus 6\p@ \@minus 3\p@}% + {\normalfont\normalsize\itshape}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {12\p@ \@plus 6\p@ \@minus 3\p@}% + {\p@}% + {\normalfont\normalsize\itshape}} + +\def\paragraph{\secdef{\els@aparagraph}{\els@bparagraph}} +\def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2.}} +\def\els@bparagraph#1{\elsparagraph*{#1.}} + +\newcommand\elsparagraph{\@startsection{paragraph}{4}{0\z@}% + {10\p@ \@plus 6\p@ \@minus 3\p@}% + {-6\p@}% + {\normalfont\itshape}} +% \end{macrocode} +% +%\section{List environment} +% +% \begin{macrocode} +\newdimen\leftMargin +\leftMargin=2em +\newtoks\@enLab %\newtoks\@enfont +\def\@enQmark{?} +\def\@enLabel#1#2{% + \edef\@enThe{\noexpand#1{\@enumctr}}% + \@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}% + \@enloop} +\def\@enSpace{\afterassignment\@enSp@ce\let\@tempa= } +\def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop} +\def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop} +\def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop} +\def\@enloop{\futurelet\@entemp\@enloop@} +\def\@enloop@{% + \ifx A\@entemp \def\@tempa{\@enLabel\Alph }\else + \ifx a\@entemp \def\@tempa{\@enLabel\alph }\else + \ifx i\@entemp \def\@tempa{\@enLabel\roman }\else + \ifx I\@entemp \def\@tempa{\@enLabel\Roman }\else + \ifx 1\@entemp \def\@tempa{\@enLabel\arabic}\else + \ifx \@sptoken\@entemp \let\@tempa\@enSpace \else + \ifx \bgroup\@entemp \let\@tempa\@enGroup \else + \ifx \@enum@\@entemp \let\@tempa\@gobble \else + \let\@tempa\@enOther + \fi\fi\fi\fi\fi\fi\fi\fi + \@tempa} +\newlength{\@sep} \newlength{\@@sep} +\setlength{\@sep}{.5\baselineskip plus.2\baselineskip + minus.2\baselineskip} +\setlength{\@@sep}{.1\baselineskip plus.01\baselineskip + minus.05\baselineskip} +\providecommand{\sfbc}{\rmfamily\upshape} +\providecommand{\sfn}{\rmfamily\upshape} +\def\@enfont{\ifnum \@enumdepth >1\let\@nxt\sfn \else\let\@nxt\sfbc \fi\@nxt} +\def\enumerate{% + \ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi + \@ifnextchar[{\@@enum@}{\@enum@}} +\def\@@enum@[#1]{% + \@enLab{}\let\@enThe\@enQmark + \@enloop#1\@enum@ + \ifx\@enThe\@enQmark\@warning{The counter will not be printed.% + ^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi + \expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}% + \expandafter\let\csname the\@enumctr\endcsname\@enThe + \csname c@\@enumctr\endcsname7 + \expandafter\settowidth + \csname leftmargin\romannumeral\@enumdepth\endcsname + {\the\@enLab\hskip\labelsep}% + \@enum@} +\def\@enum@{\list{{\@enfont\csname label\@enumctr\endcsname}}% + {\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}% + \ifnum \@enumdepth>1\setlength{\topsep}{\@@sep}\else + \setlength{\topsep}{\@sep}\fi + \ifnum \@enumdepth>1\setlength{\itemsep}{0pt plus1pt minus1pt}% + \else \setlength{\itemsep}{\@@sep}\fi + %\setlength\leftmargin{\leftMargin}%%%{1.8em} + \setlength{\parsep}{0pt plus1pt minus1pt}% + \setlength{\parskip}{0pt plus1pt minus1pt} + }} + +\def\endenumerate{\par\ifnum \@enumdepth >1\addvspace{\@@sep}\else + \addvspace{\@sep}\fi \endlist} + +\def\sitem{\@noitemargtrue\@item[\@itemlabel *]} + +\def\itemize{\@ifnextchar[{\@Itemize}{\@Itemize[]}} + +\def\@Itemize[#1]{\def\next{#1}% + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \ifx\next\@empty\else\expandafter\def\csname + labelitem\romannumeral\the\@itemdepth\endcsname{#1}\fi% + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter\list\csname\@itemitem\endcsname + {\def\makelabel##1{\hss\llap{##1}}}% + \fi} +% \end{macrocode} +% +%\section{Theorem environment} +% +% \begin{macrocode} +\def\newdefinition#1{% + \@ifnextchar[{\@odfn{#1}}{\@ndfn{#1}}}%] +\def\@ndfn#1#2{% + \@ifnextchar[{\@xndfn{#1}{#2}}{\@yndfn{#1}{#2}}} +\def\@xndfn#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@dfncountersep + \@dfncounter{#1}}% + \global\@namedef{#1}{\@dfn{#1}{#2}}% + \global\@namedef{end#1}{\@enddefinition}}} +\def\@yndfn#1#2{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@dfncounter{#1}}% + \global\@namedef{#1}{\@dfn{#1}{#2}}% + \global\@namedef{end#1}{\@enddefinition}}} +\def\@odfn#1[#2]#3{% + \@ifundefined{c@#2}{\@nocounterr{#2}}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{the#1}{\@nameuse{the#2}} + \global\@namedef{#1}{\@dfn{#2}{#3}}% + \global\@namedef{end#1}{\@enddefinition}}}} +\def\@dfn#1#2{% + \refstepcounter{#1}% + \@ifnextchar[{\@ydfn{#1}{#2}}{\@xdfn{#1}{#2}}} +\def\@xdfn#1#2{% + \@begindefinition{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@ydfn#1#2[#3]{% + \@opargbegindefinition{#2}{\csname the#1\endcsname}{#3}\ignorespaces} +\def\@dfncounter#1{\noexpand\arabic{#1}} +\def\@dfncountersep{.} +\def\@begindefinition#1#2{\trivlist + \item[\hskip\labelsep{\bfseries #1\ #2.}]\upshape} +\def\@opargbegindefinition#1#2#3{\trivlist + \item[\hskip\labelsep{\bfseries #1\ #2\ (#3).}]\upshape} +\def\@enddefinition{\endtrivlist} + +\def\@begintheorem#1#2{\trivlist + \let\baselinestretch\@blstr + \item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape} +\def\@opargbegintheorem#1#2#3{\trivlist + \let\baselinestretch\@blstr + \item[\hskip \labelsep{\bfseries #1\ #2\ (#3).}]\itshape} + +\def\newproof#1{% + \@ifnextchar[{\@oprf{#1}}{\@nprf{#1}}} +\def\@nprf#1#2{% + \@ifnextchar[{\@xnprf{#1}{#2}}{\@ynprf{#1}{#2}}} +\def\@xnprf#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@prfcountersep + \@prfcounter{#1}}% + \global\@namedef{#1}{\@prf{#1}{#2}}% + \global\@namedef{end#1}{\@endproof}}} +\def\@ynprf#1#2{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@prfcounter{#1}}% + \global\@namedef{#1}{\@prf{#1}{#2}}% + \global\@namedef{end#1}{\@endproof}}} +\def\@oprf#1[#2]#3{% + \@ifundefined{c@#2}{\@nocounterr{#2}}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{the#1}{\@nameuse{the#2}}% + \global\@namedef{#1}{\@prf{#2}{#3}}% + \global\@namedef{end#1}{\@endproof}}}} +\def\@prf#1#2{% + \refstepcounter{#1}% + \@ifnextchar[{\@yprf{#1}{#2}}{\@xprf{#1}{#2}}} +\def\@xprf#1#2{% + \@beginproof{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@yprf#1#2[#3]{% + \@opargbeginproof{#2}{\csname the#1\endcsname}{#3}\ignorespaces} +\def\@prfcounter#1{\noexpand\arabic{#1}} +\def\@prfcountersep{.} +\def\@beginproof#1#2{\trivlist\let\baselinestretch\@blstr + \item[\hskip \labelsep{\scshape #1.}]\rmfamily} +\def\@opargbeginproof#1#2#3{\trivlist\let\baselinestretch\@blstr + \item[\hskip \labelsep{\scshape #1\ (#3).}]\rmfamily} +\def\@endproof{\endtrivlist} +\newcommand*{\qed}{\hbox{}\hfill$\Box$} + +\@ifundefined{@biboptions}{\xdef\@biboptions{numbers}}{} +\InputIfFileExists{\jobname.spl}{}{} +\RequirePackage[\@biboptions]{natbib} + +\newwrite\splwrite +\immediate\openout\splwrite=\jobname.spl +\def\biboptions#1{\def\next{#1}\immediate\write\splwrite{% + \string\g@addto@macro\string\@biboptions{% + ,\expandafter\strip@prefix\meaning\next}}} + +\let\baselinestretch=\@blstr + +% \end{macrocode} +% +%\section{Page dimensions and margins for final form} +% +%\subsection{Option 1p} +% +% \begin{macrocode} +\ifnum\jtype=1 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=562pt, + textwidth=384pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=12pt, + footnotesep=24pt plus 2pt minus 12pt, + } + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \if@twocolumn\global\@twocolumnfalse\fi +% +% \end{macrocode} +% +%\subsection{Option '3p'} +% +% \begin{macrocode} +\else\ifnum\jtype=3 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=622pt, + textwidth=468pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=18pt, + footnotesep=24pt plus 2pt minus 12pt, + columnsep=2pc + } + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \if@twocolumn\input{fleqn.clo}\fi +% \end{macrocode} +% +%\subsection{Option '5p'} +% +% \begin{macrocode} +\else\ifnum\jtype=5 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=682pt, + textwidth=522pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=18pt, + footnotesep=24pt plus 2pt minus 12pt, + columnsep=18pt + }% + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \input{fleqn.clo} + \global\@twocolumntrue +%% +%% End of option '5p' +%% +\fi\fi\fi +% \end{macrocode} +% +%\section{Other items} +% +% \begin{macrocode} +\def\journal#1{\gdef\@journal{#1}} + \let\@journal\@empty +\newenvironment{frontmatter}{}{\maketitle} + +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip\footnotesize + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\AtBeginDocument{\@ifpackageloaded{hyperref} + {\def\@linkcolor{blue} + \def\@anchorcolor{blue} + \def\@citecolor{blue} + \def\@filecolor{blue} + \def\@urlcolor{blue} + \def\@menucolor{blue} + \def\@pagecolor{blue} +\begingroup + \@makeother\`% + \@makeother\=% + \edef\x{% + \edef\noexpand\x{% + \endgroup + \noexpand\toks@{% + \catcode 96=\noexpand\the\catcode`\noexpand\`\relax + \catcode 61=\noexpand\the\catcode`\noexpand\=\relax + }% + }% + \noexpand\x + }% +\x +\@makeother\` +\@makeother\= +}{}} +%% +\renewcommand\appendix{\par + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{equation}{0} + \gdef\thefigure{\@Alph\c@section.\arabic{figure}}% + \gdef\thetable{\@Alph\c@section.\arabic{table}}% + \gdef\thesection{\appendixname\@Alph\c@section}% + \@addtoreset{equation}{section}% + \gdef\theequation{\@Alph\c@section.\arabic{equation}}% +} +\def\appendixname{Appendix } + +%% Added for work with amsrefs.sty + +\@ifpackageloaded{amsrefs}% + {} + {\let\bibsection\relax% + \AtBeginDocument{\def\cites@b#1#2,#3{% + \begingroup[% + \toks@{\InnerCite{#2}#1}% + \ifx\@empty#3\@xp\@gobble\fi + \cites@c#3% +}}} +% +%% +% +% +% \end{macrocode} +% \Finale +\endinput + +%% +%% End of file 'elsarticle.dtx' +%% + diff --git a/elsarticle.ins b/elsarticle.ins new file mode 100644 index 0000000..b6c7481 --- /dev/null +++ b/elsarticle.ins @@ -0,0 +1,66 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% Copyright 2007, 2008, 2009 Elsevier Ltd +%% +%% This file is part of the 'Elsarticle Bundle'. +%% --------------------------------------------- +%% +%% It may be distributed under the conditions of the LaTeX Project Public +%% License, either version 1.2 of this license or (at your option) any +%% later version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% The list of all files belonging to the 'Elsarticle Bundle' is +%% given in the file 'manifest.txt'. +%% +%% +%% +\input docstrip.tex +%%\keepsilent + +\preamble + +Copyright 2007, 2008, 2009 Elsevier Ltd + +This file is part of the 'Elsarticle Bundle'. +------------------------------------------- + +It may be distributed under the conditions of the LaTeX Project Public +License, either version 1.2 of this license or (at your option) any +later version. The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.2 or later is part of all distributions of LaTeX +version 1999/12/01 or later. + +The list of all files belonging to the 'Elsarticle Bundle' is +given in the file `manifest.txt'. + +\endpreamble + +\askforoverwritefalse + +\generate{\file{elsarticle.cls}{\from{elsarticle.dtx}{class}}} +\obeyspaces +\Msg{*************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* elsarticle.cls *} +\Msg{* and *} +\Msg{* elsarticle-*.bst *} +\Msg{* *} +\Msg{* To produce the documentation go to the ../contrib folder *} +\Msg{* and run the file elsdoc.tex through pdfLaTeX *} +\Msg{* or use the Makefile which is far more easier. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{*************************************************************} + +\endbatchfile diff --git a/elsarticle.zip b/elsarticle.zip new file mode 100644 index 0000000..6dbe09e Binary files /dev/null and b/elsarticle.zip differ