Commit f926939b authored by Michael Wimmer's avatar Michael Wimmer
Browse files

Merge branch 'rewrite_polymers' into 'master'

Rewrite polymers

See merge request !8
parents 9bb2948e 42a62882
Pipeline #58175 passed with stages
in 1 minute and 46 seconds
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="211.66667mm"
height="211.66669mm"
viewBox="0 0 211.66667 211.66669"
version="1.1"
id="svg1659"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="polymer-freerandomwalk.svg">
<defs
id="defs1653" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="394.38022"
inkscape:cy="-768.47686"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1848"
inkscape:window-height="1016"
inkscape:window-x="72"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata1656">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(266.87619,266.15953)">
<g
style="stroke:#000000;stroke-width:0.05;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
id="g922"
transform="matrix(9.9764333,0,0,9.9764333,-337.01606,-1574.7627)">
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="M 7.0555556,131.19444 H 28.222223 v 21.16667 H 7.0555556 v -21.16667"
id="path900"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="m 10.583333,131.19444 v 21.16667"
id="path902"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path904"
d="m 14.111111,131.19444 v 21.16667"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="m 17.638889,131.19444 v 21.16667"
id="path906"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path908"
d="m 21.166667,131.19444 v 21.16667"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="m 24.694445,131.19444 v 21.16667"
id="path910"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path912"
d="M 28.222222,134.72222 H 7.0555524"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="M 28.222222,138.25 H 7.0555528"
id="path914"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path916"
d="M 28.222222,141.77778 H 7.0555532"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="M 28.222222,145.30555 H 7.0555536"
id="path918"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path920"
d="M 28.222222,148.83333 H 7.055554"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:3.49175167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m -196.23752,-160.32628 33.78011,-1.17881 37.78803,3.3006 34.015849,-2.12179 v -35.19456 h -35.194659 l -2.21437,33.54426 2.21437,36.84497 v 35.194657 h -35.19466 -35.19467 v -35.194657 h 35.19467 l 4.33625,-32.74445 -4.33625,-37.64478 h -35.19467 v -35.19466"
id="path962"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccc" />
<circle
r="7.038928"
cy="-161.03461"
cx="-162.00426"
id="circle958"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle928"
cx="-157.34622"
cy="-158.27258"
r="7.038928" />
<circle
r="7.038928"
cy="-195.52087"
cx="-196.23735"
id="circle926"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle966"
cx="-124.16396"
cy="-157.63185"
r="7.038928" />
<path
style="fill:none;stroke:#000000;stroke-width:3.49175167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m -127.9634,-160.32618 2.11521,35.19467"
id="path970"
inkscape:connector-curvature="0" />
<circle
r="7.038928"
cy="-161.97691"
cx="-127.97012"
id="circle930"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle932"
cx="-125.84821"
cy="-195.52087"
r="7.038928" />
<circle
r="7.038928"
cy="-195.52087"
cx="-90.653488"
id="circle934"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle936"
cx="-161.04279"
cy="-195.52087"
r="7.038928" />
<circle
r="7.038928"
cy="-230.71559"
cx="-196.23735"
id="circle938"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
r="7.038928"
cy="-89.936958"
cx="-196.23735"
id="circle942"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle944"
cx="-196.23735"
cy="-160.32629"
r="7.038928" />
<circle
r="7.038928"
cy="-160.32629"
cx="-196.23735"
id="circle946"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle948"
cx="-196.23735"
cy="-125.13153"
r="7.038928" />
<circle
r="7.038928"
cy="-125.13153"
cx="-161.04279"
id="circle950"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle952"
cx="-161.04279"
cy="-89.936958"
r="7.038928" />
<circle
r="7.038928"
cy="-89.936958"
cx="-125.84821"
id="circle954"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle956"
cx="-125.84821"
cy="-125.13153"
r="7.038928" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle960"
cx="-90.653488"
cy="-160.32629"
r="7.038928" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="211.66667mm"
height="211.66669mm"
viewBox="0 0 211.66667 211.66669"
version="1.1"
id="svg983"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="polymer-selfavoiding.svg">
<defs
id="defs977" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.1220729"
inkscape:cx="136.3977"
inkscape:cy="680.59456"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1848"
inkscape:window-height="1016"
inkscape:window-x="72"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata980">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(166.33452,153.52263)">
<g
transform="matrix(9.9764333,0,0,9.9764333,-236.47439,-1462.1258)"
id="g882"
style="stroke:#000000;stroke-width:0.05;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1">
<path
inkscape:connector-curvature="0"
id="path817"
d="M 7.0555556,131.19444 H 28.222223 v 21.16667 H 7.0555556 v -21.16667"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path819"
d="m 10.583333,131.19444 v 21.16667"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="m 14.111111,131.19444 v 21.16667"
id="path821"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path823"
d="m 17.638889,131.19444 v 21.16667"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="m 21.166667,131.19444 v 21.16667"
id="path825"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path827"
d="m 24.694445,131.19444 v 21.16667"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="M 28.222222,134.72222 H 7.0555524"
id="path829"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path831"
d="M 28.222222,138.25 H 7.0555528"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="M 28.222222,141.77778 H 7.0555532"
id="path833"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path835"
d="M 28.222222,145.30555 H 7.0555536"
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.05, 0.05;stroke-dashoffset:0;stroke-opacity:1"
d="M 28.222222,148.83333 H 7.055554"
id="path837"
inkscape:connector-curvature="0" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:3.49175167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m -60.501184,-47.689347 h 35.194662 v -35.194562 -35.194661 h -35.194662 -35.194662 v 35.194661 h -35.194664 v 35.194562 h 35.194664 v 35.194662 h 35.194662 v 35.194661 h 35.194662 V -12.494685 H 9.8881395 v -35.194562"
id="path892"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccc" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path839"
cx="-95.695816"
cy="-82.883919"
r="7.038928" />
<circle
r="7.038928"
cy="-47.689342"
cx="-60.501247"
id="circle841"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle843"
cx="-25.306522"
cy="-47.689342"
r="7.038928" />
<circle
r="7.038928"
cy="-82.883919"
cx="-25.306522"
id="circle845"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle847"
cx="-25.306522"
cy="-118.07864"
r="7.038928" />
<circle
r="7.038928"
cy="-118.07864"
cx="-60.501247"
id="circle849"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle851"
cx="-95.695816"
cy="-118.07864"
r="7.038928" />
<circle
r="7.038928"
cy="-82.883919"
cx="-130.89055"
id="circle853"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle855"
cx="-130.89055"
cy="-47.689342"
r="7.038928" />
<circle
r="7.038928"
cy="-47.689342"
cx="-95.695816"
id="circle857"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle859"
cx="-95.695816"
cy="-47.689342"
r="7.038928" />
<circle
r="7.038928"
cy="-12.494619"
cx="-95.695816"
id="circle861"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle863"
cx="-60.501247"
cy="-12.494619"
r="7.038928" />
<circle
r="7.038928"
cy="22.699953"
cx="-60.501247"
id="circle865"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle867"
cx="-25.306522"
cy="22.699953"
r="7.038928" />
<circle
r="7.038928"
cy="-12.494619"
cx="-25.306522"
id="circle894"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle896"
cx="9.8880491"
cy="-12.494619"
r="7.038928" />
<circle
r="7.038928"
cy="-47.689342"
cx="9.8880491"
id="circle898"
style="fill:#fffbff;fill-opacity:1;stroke:#000000;stroke-width:2.99293017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>
......@@ -2,8 +2,7 @@
This project is a bit different from the other two on the technical side:
instead of using the Metropolis algorithm (i.e. generating a Markov chain)
to sample the Boltzmann distribution, we use a [nearby distribution for the
importance sampling](proj2-monte-carlo.md#importance-sampling)
to sample the Boltzmann distribution, we use [approximate importance sampling](proj2-monte-carlo.md#importance-sampling)
The goal is to simulate the properties of long polymers in a good
solvent (the latter just means that the polymers do not want to stick
......@@ -12,48 +11,39 @@ polymers), and to study how they curl up.
To do this, we use a simple model for the polymer in 2D
- it consists of a sequence of $N$ consecutive "beads"
- the distance between beads is fixed (1 in dimensionless units)
- the angle $\theta$ between the links of three neighboring beads can take
any value
- the interaction between the beads/atoms is modelled with a Lennard-Jones
potential
If there was no interaction between atoms, the polymer would correspond to
a random walk. The repulsive interaction of the Lennard-Jones potential
prevents atoms to come too close and turns the polymer into a *self-avoiding
random walk*.
![](/figures/build_polymer.svg)
We could sample the different polymers by constructing a full polymer
with $N$ beads by chosing $N-1$ angles
completely randomly. The problem with this approach is that most
polymers would energetically be very unfavorable. The Rosenbluth
algorithm improves on this by building up a polymer step by step: a
new bead with angle $\theta$ is added to an existing polymer with
probability $\sim \exp(-E(\theta)/k_b T)$, where $E(\theta)$ is
the additional energy due to the extra bead. Note that while this looks like
the Boltzmann distribution, the full polymer does not go according to the
Boltzmann distribution! The Monte Carlo sampling
then consists of growing an ensemble of polymers (which are completely
independent, unlike the Markov chain).
To account for the deviation from the real Boltzmann distribution , we
have to associate a weight factor $W_i$ with the $i$-th sample.
The expectation value of a quantity $A$ is then given by
$$
\langle A\rangle = \frac{\sum_i W_i A_i}{\sum_i W_i}
$$
Work out the weight factors by consulting [Chapter 10.6 from Jos'
book!](/downloads/Thijssen_Chapter10_Monte_Carlo_Method.pdf). It is essential to
get these right, otherwise your simulation will not work.
To quantitatively investigate the curling of polymers, it is useful t
the end-to-end distance of the polymers. Compare the case with
interactions to the case without interactions between the atoms.
- a polymer is a chain of subunits (monomers)
- the distance between monomers is fixed (1 in dimensionless units)
- the angle between neighboring bonds is fixed to multiples of $90^\circ$. With this, the subunits of the polymer are restricted to the sites of a square lattice.
- One lattice site can only be occupied by one monomer.
This set of rules turns the polymer problem into a *self-avoiding
random walk* on a square lattice.
![](/figures/polymer-selfavoiding.svg)
It would be possible to sample all self-avoiding random walks by starting
from a free random walk, and throwing away all paths with intersections.
However, this quickly becomes too expensive computationally!
In this project we instead employ a Monte Carlo method, to sample
only a finite number of representive polymers. In particular, we
employ the Rosenbluth that builds a polymer step by step: an existing polymer is grown
by adding a new subunit onto an unoccupied lattice site. In this way we sample
only allowed polymers. However, not every polymer then has the same
probability (as desired by us), as the growing process favors certain
configurations more than others!
In accordance with what we have learned for [approximate importance sampling](proj2-monte-carlo.md#importance-sampling),
we need to correct for this by introducing a weight.
This is derived in detail in the [lecture notes for the polymer project](proj2-polymers.md)
In particular, make sure you understand how Eq. (2) is derived there :
$$\langle r^2(L) \rangle = \frac{ \sum_{k=1}^N w_k^{(L)} r^2_{k}(L)}{\sum_{k=1}^N w_k^{(L)}} \tag{2}$$
Your first task in this project is thus to implement the Rosenbluth algorithm.
To quantitatively investigate the curling of polymers, it is useful to study
the squared end-to-end distance or the squared radius of gyration of the polymers. Both
quantities are known to scale as $~L^{2\nu}$ with $\nu=3/4$. Reproduce this scaling behavior!
This can be compared to the case of a free random walk, where we know $\nu=1/2$.
After implementing the Rosenbluth algorithm, you will find that for
long polymers very few samples have a large weight and dominate,
......@@ -79,4 +69,4 @@ algorithm.
## Literature
- details of the method in [Chapter 10.6](/downloads/Thijssen_Chapter10_Monte_Carlo_Method.pdf)
\ No newline at end of file
For this project we have written [extended lecture notes with all relevant information](proj2-polymers.md)
\ No newline at end of file
# Simulating polymers as self-avoiding random walks
## Background: polymers and how to characterize them
Polymers are large molecules composed of several repeating subunits (the monomers). They play an important role in our everyday life, ranging from biological processes to synthetic materials (see [Polymers on Wikipedia](https://en.wikipedia.org/wiki/Polymer) for more background).
In this project we want to simulate polymers that are linear and unbranched, and that are immersed in a good solvent. The latter condition of being in a good solvent means that different polymers are separated from each other and will not interact. We can thus consider the physics of a single polymer alone.
One particular property of a polymer is its lack of rigidity: in general polymers are rather floppy. We will not describe this from a microscopic model (such as quantum chemistry), but we will instead use a more simplistic toy model described below. Before we do that, let us however first consider how we can *quantitatively* describe a polymer.
We can assign the $i$-th subunit of the polymer a coordinate vector $\mathbf{r}_i$. A linear polymer consisting of $L+1$ subunits is then described by a ordered set of points
$\{\mathbf{r}_0, \mathbf{r}_1, \dots, \mathbf{r}_L\}$. Note that there are $L+1$ subunits, but $L$ bonds between the subunits.
We can characterize the polymer by its end-to-end distance:
$$r_e^2(L) = \left|\mathbf{r}_L - \mathbf{r}_0\right|^2\,.$$
Alternatively, we can use the radius of gyration that is given by
$$r_g^2(L) = \frac{1}{L+1} \sum_{i=0}^L \left|\mathbf{r}_i - \mathbf{r}_\text{cm}\right|^2\,,$$
where $\mathbf{r}_\text{cm} = \frac{1}{L+1} \sum_{i=0}^L \mathbf{r}_i$ is the center of mass of the polymer. The radius of gyration describes how "curled up" the polymer is.
## Model: Polymers as a self-avoiding random walk on a lattice
We will now give a complete description of the polymer toy model. We will continue
to describe a polymer by an ordered set of points $\{\mathbf{r}_0, \mathbf{r}_1, \dots, \mathbf{r}_L\}$. In a polymer, the distance between subunits is determined by the length of the chemical bonds, and we will thus assume a fixed bond length $a$ between subunits $\left|\mathbf{r}_{i+1} - \mathbf{r}_i\right| = a$. In contrast, for many polymers the angle between bonds is far less restricted, and we use this as the degree of freedom that determines the shape of the polymer.
To simplify the model even further, we will assume that the angle between different bonds is restricted to be a multiple of $90^{\circ}$. In doing so, we restrict the polymer points $\mathbf{r}_i$ to be on a square lattice with lattice constant $a$. Without restricting generality, we can set $a=1$.
![self-avoiding random walk](figures/polymer-selfavoiding.svg)
In the above example, you may already see the last ingredient for our toy model: Since a polymer has a finite extent in space, two subunits cannot come too close. In our lattice model we implement this by demanding that one lattice point cannot be occupied by two different subunits. In other words: $\mathbf{r}_i \neq \mathbf{r}_j$ for all $i \neq j$.
With these assumptions, our polymer model becomes a *self-avoiding random walk on a square lattice*.
For such a self-avoiding random walk, the end-to-end distance and the radius of gyration are known to obey a scaling law:
$$\langle r^2_e(L)\rangle \sim L^{2\nu}\,$$
$$\langle r^2_g(L)\rangle \sim L^{2\nu}\,$$
where $\nu = 3/4$ for 2D, and $\nu\approx 3/5$ in 3D.
(For more details, see [the information at this link](https://polymerdatabase.com/polymer%20physics/SAW.html)).
**The goal of this project is to reproduce the findings (for 2D).**
The behavior of the self-avoiding random walk should be contrasted to the free random walk where both backtracking (the random walk takes a step back: $\mathbf{r}_{i+2} = \mathbf{r}_i$) and intersections are allowed:
![free random walk](figures/polymer-freerandomwalk.svg)
For the free random walk the scaling behavior is well-known and we have $\nu = 1/2$.