Changeset - ec439fed4af8
[Not reviewed]
default
0 9 0
Michael Guravage - 15 years ago 2010-10-15 19:27:29
michael.guravage@cwi.nl
Synchronise leaf movie frame and cell export data timestep references.

--
user: Michael Guravage <michael.guravage@cwi.nl>
branch 'default'
changed doc/v1.html
changed doc/v1.pdf
changed doc/v1.rst
changed src/ChangeLog
changed src/VirtualLeaf.cpp
changed src/canvas.cpp
changed src/canvas.h
changed src/mainbase.h
changed src/mesh.h
9 files changed with 915 insertions and 239 deletions:
0 comments (0 inline, 0 general)
doc/v1.html
Show inline comments
 
@@ -547,25 +547,25 @@ LanguageError: IOError: [Errno 2] No tra
 
<ol class="arabic simple">
 
<li>easy_install mercurial</li>
 
<li>mkdir src</li>
 
<li>cd src</li>
 
<li>hg clone <a class="reference external" href="http://www.riverbankcomputing.com/hg/sip">http://www.riverbankcomputing.com/hg/sip</a></li>
 
<li>cd sip</li>
 
<li>python build.py prepare</li>
 
<li>python configure.py</li>
 
<li>make</li>
 
<li>make install</li>
 
<li>cd ..</li>
 
<li>wget <a class="reference external" href="http://www.riverbankcomputing.com/static/Downloads/PyQt4/PyQt-x11-gpl-4.7.7.tar.gz">http://www.riverbankcomputing.com/static/Downloads/PyQt4/PyQt-x11-gpl-4.7.7.tar.gz</a></li>
 
<li>tar xzf PyQt-x11-gpl-4.7.7</li>
 
<li>tar xzf PyQt-x11-gpl-4.7.7.tar.gz</li>
 
<li>cd PyQt-x11-gpl-4.7.7</li>
 
<li>python configure.py</li>
 
<li>make</li>
 
<li>make install</li>
 
<li>cd ..</li>
 
<li>hg clone <a class="reference external" href="https://litsol&#64;bitbucket.org/bfrog/cutehg">https://litsol&#64;bitbucket.org/bfrog/cutehg</a></li>
 
<li>cd cutehg</li>
 
<li>python setup.py build</li>
 
<li>python setup.py install</li>
 
<li>cd ..</li>
 
<li>easy_install rhodecode, <a class="reference external" href="http://pypi.python.org/pypi/RhodeCode/1.0.0rc2">http://pypi.python.org/pypi/RhodeCode/1.0.0rc2</a></li>
 
</ol>
 
@@ -585,19 +585,93 @@ work. e.g. graphical logs and diff highl
 
<p>I think that if Chris can install RhodeCode, I can serve individual
 
instance from my home directory.</p>
 
</div>
 
<div class="section" id="sed-ml-l1v1rc1">
 
<h2>SED-ML L1V1RC1</h2>
 
<p>Walking through the new SED-ML schema I see that they've dropped the
 
generic simulation class and added AddXML and RemoveXML model change
 
classes. Adding several more SED-ML examples for the symposium might
 
still be justified - though they become obsolete the moment I
 
introduce the new schema changes.</p>
 
</div>
 
</div>
 
<div class="section" id="wednesday-13-october-2010">
 
<h1>Wednesday 13 October 2010</h1>
 
<p>Tweaked <tt class="docutils literal">.bashrc</tt> and <tt class="docutils literal">virtualenvwrapper.sh</tt> to facilitate
 
virtualenv and virtualenvwrapper - many unbound variables!</p>
 
<p>Pushed recent changes to repository from where Roeland can retrieve
 
and test them.</p>
 
<p>OK. RhodeCode RC4 works out of the box, excepting cutehg and PyQt4.</p>
 
</div>
 
<div class="section" id="friday-15-october-2010">
 
<h1>Friday 15 October 2010</h1>
 
<div class="section" id="id1">
 
<h2>Rhodecode</h2>
 
<p>Installing RhodeCode locally on the nhypnos is a real pain. In
 
addition to the previous list of dependencies, for the caterpie, add
 
these for the nhypnos:</p>
 
<ol class="arabic simple">
 
<li>Python</li>
 
<li>Bison (for sip)</li>
 
<li>Flex (for sip)</li>
 
<li>m4 (for Bison)</li>
 
<li>Qt (for PyQt)</li>
 
<li>GLIBCXX_3.4.9 (for Qt) - I draw the line at (re)installing GCC!</li>
 
</ol>
 
<p>OK. Forget sip bison, flex, m4, Qt and the rest. Let's install just
 
the minimum.</p>
 
<p>First, install sqlite; we'll see in a minute that Python requires
 
it. The sources are available at: <a class="reference external" href="http://www.sqlite.org/download.html">http://www.sqlite.org/download.html</a>.</p>
 
<p>Second, install Python. My initial attempt complained it was missing
 
the following bits and pieces:</p>
 
<pre class="literal-block">
 
Python build finished, but the necessary bits to build these modules were not found:
 
_bsddb             _sqlite3           _ssl
 
_tkinter           bsddb185           dl
 
imageop            readline           sunaudiodev
 
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
 
</pre>
 
<p>So install sqlite first. And, since Python's configure script doesn't
 
have an option for it, I had to tweak <tt class="docutils literal">setup.py</tt> to enumerate the
 
path where it would find sqlite;</p>
 
<p>Third, install RhodeCode. I first installed it using easy_install, but
 
while the result worked, the changelog view did not display the
 
branch/merge graphics. I then cloned the code from its bitbucket repository:</p>
 
<pre class="literal-block">
 
clone https://litsol&#64;bitbucket.org/marcinkuzminski/rhodecode
 
</pre>
 
<p>Replacing the egg installed by easy_install by this code does display
 
the branch/merge graphics.</p>
 
<p>Fourth, setup and serve rhodecode. Following the instructions posted
 
online at: <a class="reference external" href="http://packages.python.org/RhodeCode/setup.html#setup">http://packages.python.org/RhodeCode/setup.html#setup</a> works as advertised:</p>
 
<pre class="literal-block">
 
paster make-config RhodeCode production.ini
 
paster setup-app production.ini
 
paster serve production.ini
 
</pre>
 
<p>All that's left is an apache rewrite rule directing
 
virtualleaf.project.cwi.nl/repository to port 5000, or whaterver we
 
change it to, on the nhypnos.</p>
 
</div>
 
<div class="section" id="id2">
 
<h2>The Virtual Leaf</h2>
 
<p>Added <tt class="docutils literal">incrementIterations()</tt>, <tt class="docutils literal">getIterations()</tt> and <tt class="docutils literal">int
 
iterations</tt> to mesh.h. <tt class="docutils literal">incrementIterations()</tt> is called in TIMESTEP in
 
VirtualLeaf.cpp. The actual counter, <tt class="docutils literal">iterations</tt> is initalized to
 
zero in the Mesh class constructor.</p>
 
<p>The iterations are inquired in two places: for the frame count in
 
<tt class="docutils literal"><span class="pre">MainBase::Plot</span></tt> in <tt class="docutils literal">VirtualLeaf.cpp` and for the export cell data
 
interval in <span class="pre">``Main::TimeStepWrap</span></tt> in <tt class="docutils literal">canvas.cpp</tt>.</p>
 
<p>The questions remain: Should we use this count, and if yes, where
 
should it be incremented? The previous count was incremented in
 
<tt class="docutils literal"><span class="pre">Main::TimeStepWrap</span></tt>. Or should we simply use
 
<tt class="docutils literal">(int)mesh.getTime()</tt>? Since this is not an ordinal count, the
 
results look strange.</p>
 
</div>
 
</div>
 
</div>
 
<div class="footer">
 
<hr class="footer" />
 
###Page###
 
</div>
 
</body>
 
</html>
doc/v1.pdf
Show inline comments
 
@@ -19,58 +19,58 @@ endobj
 
% 'F2': class PDFType1Font 
 
3 0 obj
 
% Font Helvetica-Bold
 
<< /BaseFont /Helvetica-Bold
 
 /Encoding /WinAnsiEncoding
 
 /Name /F2
 
 /Subtype /Type1
 
 /Type /Font >>
 
endobj
 
% 'Page1': class PDFPage 
 
4 0 obj
 
% Page dictionary
 
<< /Contents 56 0 R
 
<< /Contents 63 0 R
 
 /MediaBox [ 0
 
 0
 
 595.2756
 
 841.8898 ]
 
 /Parent 55 0 R
 
 /Parent 62 0 R
 
 /Resources << /Font 1 0 R
 
 /ProcSet [ /PDF
 
 /Text
 
 /ImageB
 
 /ImageC
 
 /ImageI ] >>
 
 /Rotate 0
 
 /Trans <<  >>
 
 /Type /Page >>
 
endobj
 
% 'F3': class PDFType1Font 
 
5 0 obj
 
% Font Courier
 
<< /BaseFont /Courier
 
 /Encoding /WinAnsiEncoding
 
 /Name /F3
 
 /Subtype /Type1
 
 /Type /Font >>
 
endobj
 
% 'Page2': class PDFPage 
 
6 0 obj
 
% Page dictionary
 
<< /Contents 57 0 R
 
<< /Contents 64 0 R
 
 /MediaBox [ 0
 
 0
 
 595.2756
 
 841.8898 ]
 
 /Parent 55 0 R
 
 /Parent 62 0 R
 
 /Resources << /Font 1 0 R
 
 /ProcSet [ /PDF
 
 /Text
 
 /ImageB
 
 /ImageC
 
 /ImageI ] >>
 
 /Rotate 0
 
 /Trans <<  >>
 
 /Type /Page >>
 
endobj
 
% 'Annot.NUMBER1': class PDFDictionary 
 
7 0 obj
 
@@ -178,30 +178,30 @@ 13 0 obj
 
 /Type /Annot >>
 
endobj
 
% 'Page3': class PDFPage 
 
14 0 obj
 
% Page dictionary
 
<< /Annots [ 7 0 R
 
 8 0 R
 
 9 0 R
 
 10 0 R
 
 11 0 R
 
 12 0 R
 
 13 0 R ]
 
 /Contents 58 0 R
 
 /Contents 65 0 R
 
 /MediaBox [ 0
 
 0
 
 595.2756
 
 841.8898 ]
 
 /Parent 55 0 R
 
 /Parent 62 0 R
 
 /Resources << /Font 1 0 R
 
 /ProcSet [ /PDF
 
 /Text
 
 /ImageB
 
 /ImageC
 
 /ImageI ] >>
 
 /Rotate 0
 
 /Trans <<  >>
 
 /Type /Page >>
 
endobj
 
% 'Annot.NUMBER8': class PDFDictionary 
 
15 0 obj
 
@@ -341,30 +341,30 @@ endobj
 
% 'Page4': class PDFPage 
 
24 0 obj
 
% Page dictionary
 
<< /Annots [ 15 0 R
 
 16 0 R
 
 17 0 R
 
 18 0 R
 
 19 0 R
 
 20 0 R
 
 21 0 R
 
 22 0 R
 
 23 0 R ]
 
 /Contents 59 0 R
 
 /Contents 66 0 R
 
 /MediaBox [ 0
 
 0
 
 595.2756
 
 841.8898 ]
 
 /Parent 55 0 R
 
 /Parent 62 0 R
 
 /Resources << /Font 1 0 R
 
 /ProcSet [ /PDF
 
 /Text
 
 /ImageB
 
 /ImageC
 
 /ImageI ] >>
 
 /Rotate 0
 
 /Trans <<  >>
 
 /Type /Page >>
 
endobj
 
% 'Annot.NUMBER17': class PDFDictionary 
 
25 0 obj
 
@@ -372,383 +372,484 @@ 25 0 obj
 
 /Type /Action
 
 /URI (http://pypi.python.org/pypi/RhodeCode/1.0.0rc2) >>
 
 /Border [ 0
 
 0
 
 0 ]
 
 /Rect [ 193.5229
 
 696.5936
 
 403.0829
 
 708.5936 ]
 
 /Subtype /Link
 
 /Type /Annot >>
 
endobj
 
% 'Annot.NUMBER18': class PDFDictionary 
 
26 0 obj
 
<< /A << /S /URI
 
 /Type /Action
 
 /URI (http://www.sqlite.org/download.html) >>
 
 /Border [ 0
 
 0
 
 0 ]
 
 /Rect [ 62.69291
 
 123.5936
 
 219.9729
 
 135.5936 ]
 
 /Subtype /Link
 
 /Type /Annot >>
 
endobj
 
% 'Page5': class PDFPage 
 
26 0 obj
 
27 0 obj
 
% Page dictionary
 
<< /Annots [ 25 0 R ]
 
 /Contents 60 0 R
 
<< /Annots [ 25 0 R
 
 26 0 R ]
 
 /Contents 67 0 R
 
 /MediaBox [ 0
 
 0
 
 595.2756
 
 841.8898 ]
 
 /Parent 55 0 R
 
 /Parent 62 0 R
 
 /Resources << /Font 1 0 R
 
 /ProcSet [ /PDF
 
 /Text
 
 /ImageB
 
 /ImageC
 
 /ImageI ] >>
 
 /Rotate 0
 
 /Trans <<  >>
 
 /Type /Page >>
 
endobj
 
% 'Annot.NUMBER19': class PDFDictionary 
 
28 0 obj
 
<< /A << /S /URI
 
 /Type /Action
 
 /URI (http://packages.python.org/RhodeCode/setup.html#setup) >>
 
 /Border [ 0
 
 0
 
 0 ]
 
 /Rect [ 62.69291
 
 547.1262
 
 318.3929
 
 559.1262 ]
 
 /Subtype /Link
 
 /Type /Annot >>
 
endobj
 
% 'Page6': class PDFPage 
 
29 0 obj
 
% Page dictionary
 
<< /Annots [ 28 0 R ]
 
 /Contents 68 0 R
 
 /MediaBox [ 0
 
 0
 
 595.2756
 
 841.8898 ]
 
 /Parent 62 0 R
 
 /Resources << /Font 1 0 R
 
 /ProcSet [ /PDF
 
 /Text
 
 /ImageB
 
 /ImageC
 
 /ImageI ] >>
 
 /Rotate 0
 
 /Trans <<  >>
 
 /Type /Page >>
 
endobj
 
% 'R27': class PDFCatalog 
 
27 0 obj
 
% 'R30': class PDFCatalog 
 
30 0 obj
 
% Document Root
 
<< /Outlines 29 0 R
 
 /PageLabels 61 0 R
 
<< /Outlines 32 0 R
 
 /PageLabels 69 0 R
 
 /PageMode /UseNone
 
 /Pages 55 0 R
 
 /Pages 62 0 R
 
 /Type /Catalog >>
 
endobj
 
% 'R28': class PDFInfo 
 
28 0 obj
 
% 'R31': class PDFInfo 
 
31 0 obj
 
<< /Author ()
 
 /CreationDate (D:20101013132920-01'00')
 
 /CreationDate (D:20101015155138-01'00')
 
 /Keywords ()
 
 /Producer (ReportLab http://www.reportlab.com)
 
 /Subject (\(unspecified\))
 
 /Title (The Virtual Leaf) >>
 
endobj
 
% 'R29': class PDFOutlines 
 
29 0 obj
 
<< /Count 28
 
 /First 30 0 R
 
 /Last 52 0 R
 
% 'R32': class PDFOutlines 
 
32 0 obj
 
<< /Count 33
 
 /First 33 0 R
 
 /Last 59 0 R
 
 /Type /Outlines >>
 
endobj
 
% 'Outline.0': class OutlineEntryObject 
 
30 0 obj
 
33 0 obj
 
<< /Dest [ 4 0 R
 
 /XYZ
 
 62.69291
 
 717.0236
 
 0 ]
 
 /Next 31 0 R
 
 /Parent 29 0 R
 
 /Next 34 0 R
 
 /Parent 32 0 R
 
 /Title (Friday 11 June 2010) >>
 
endobj
 
% 'Outline.1': class OutlineEntryObject 
 
31 0 obj
 
34 0 obj
 
<< /Dest [ 4 0 R
 
 /XYZ
 
 62.69291
 
 393.0236
 
 0 ]
 
 /Next 32 0 R
 
 /Parent 29 0 R
 
 /Prev 30 0 R
 
 /Next 35 0 R
 
 /Parent 32 0 R
 
 /Prev 33 0 R
 
 /Title (Friday 24 September 2010) >>
 
endobj
 
% 'Outline.2': class OutlineEntryObject 
 
32 0 obj
 
35 0 obj
 
<< /Dest [ 4 0 R
 
 /XYZ
 
 62.69291
 
 273.0236
 
 0 ]
 
 /Next 33 0 R
 
 /Parent 29 0 R
 
 /Prev 31 0 R
 
 /Next 36 0 R
 
 /Parent 32 0 R
 
 /Prev 34 0 R
 
 /Title (Monday 27 September 2010) >>
 
endobj
 
% 'Outline.3': class OutlineEntryObject 
 
33 0 obj
 
36 0 obj
 
<< /Count 11
 
 /Dest [ 4 0 R
 
 /XYZ
 
 62.69291
 
 174.0236
 
 0 ]
 
 /First 34 0 R
 
 /Last 44 0 R
 
 /Next 45 0 R
 
 /Parent 29 0 R
 
 /Prev 32 0 R
 
 /First 37 0 R
 
 /Last 47 0 R
 
 /Next 48 0 R
 
 /Parent 32 0 R
 
 /Prev 35 0 R
 
 /Title (Tuesday 5 October 20010) >>
 
endobj
 
% 'Outline.26.0': class OutlineEntryObject 
 
34 0 obj
 
% 'Outline.30.0': class OutlineEntryObject 
 
37 0 obj
 
<< /Dest [ 4 0 R
 
 /XYZ
 
 62.69291
 
 141.0236
 
 0 ]
 
 /Next 35 0 R
 
 /Parent 33 0 R
 
 /Next 38 0 R
 
 /Parent 36 0 R
 
 /Title (tutorial0.pro) >>
 
endobj
 
% 'Outline.26.1': class OutlineEntryObject 
 
35 0 obj
 
% 'Outline.30.1': class OutlineEntryObject 
 
38 0 obj
 
<< /Dest [ 6 0 R
 
 /XYZ
 
 62.69291
 
 753.0236
 
 0 ]
 
 /Next 36 0 R
 
 /Parent 33 0 R
 
 /Prev 34 0 R
 
 /Next 39 0 R
 
 /Parent 36 0 R
 
 /Prev 37 0 R
 
 /Title (auxingrowthplugin.h) >>
 
endobj
 
% 'Outline.26.2': class OutlineEntryObject 
 
36 0 obj
 
% 'Outline.30.2': class OutlineEntryObject 
 
39 0 obj
 
<< /Dest [ 6 0 R
 
 /XYZ
 
 62.69291
 
 693.0236
 
 0 ]
 
 /Next 37 0 R
 
 /Parent 33 0 R
 
 /Prev 35 0 R
 
 /Next 40 0 R
 
 /Parent 36 0 R
 
 /Prev 38 0 R
 
 /Title (VirtualLeaf.cpp) >>
 
endobj
 
% 'Outline.26.3': class OutlineEntryObject 
 
37 0 obj
 
% 'Outline.30.3': class OutlineEntryObject 
 
40 0 obj
 
<< /Dest [ 6 0 R
 
 /XYZ
 
 62.69291
 
 633.0236
 
 0 ]
 
 /Next 38 0 R
 
 /Parent 33 0 R
 
 /Prev 36 0 R
 
 /Next 41 0 R
 
 /Parent 36 0 R
 
 /Prev 39 0 R
 
 /Title (canvas.h) >>
 
endobj
 
% 'Outline.26.4': class OutlineEntryObject 
 
38 0 obj
 
% 'Outline.30.4': class OutlineEntryObject 
 
41 0 obj
 
<< /Dest [ 6 0 R
 
 /XYZ
 
 62.69291
 
 585.0236
 
 0 ]
 
 /Next 39 0 R
 
 /Parent 33 0 R
 
 /Prev 37 0 R
 
 /Next 42 0 R
 
 /Parent 36 0 R
 
 /Prev 40 0 R
 
 /Title (canvas.cpp) >>
 
endobj
 
% 'Outline.26.5': class OutlineEntryObject 
 
39 0 obj
 
% 'Outline.30.5': class OutlineEntryObject 
 
42 0 obj
 
<< /Dest [ 6 0 R
 
 /XYZ
 
 62.69291
 
 395.8236
 
 0 ]
 
 /Next 40 0 R
 
 /Parent 33 0 R
 
 /Prev 38 0 R
 
 /Next 43 0 R
 
 /Parent 36 0 R
 
 /Prev 41 0 R
 
 /Title (mesh.h) >>
 
endobj
 
% 'Outline.26.6': class OutlineEntryObject 
 
40 0 obj
 
% 'Outline.30.6': class OutlineEntryObject 
 
43 0 obj
 
<< /Dest [ 6 0 R
 
 /XYZ
 
 62.69291
 
 250.4814
 
 0 ]
 
 /Next 41 0 R
 
 /Parent 33 0 R
 
 /Prev 39 0 R
 
 /Next 44 0 R
 
 /Parent 36 0 R
 
 /Prev 42 0 R
 
 /Title (mesh.cpp) >>
 
endobj
 
% 'Outline.26.7': class OutlineEntryObject 
 
41 0 obj
 
% 'Outline.30.7': class OutlineEntryObject 
 
44 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 753.0236
 
 0 ]
 
 /Next 42 0 R
 
 /Parent 33 0 R
 
 /Prev 40 0 R
 
 /Next 45 0 R
 
 /Parent 36 0 R
 
 /Prev 43 0 R
 
 /Title (modelcatalogue.cpp) >>
 
endobj
 
% 'Outline.26.8': class OutlineEntryObject 
 
42 0 obj
 
% 'Outline.30.8': class OutlineEntryObject 
 
45 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 705.0236
 
 0 ]
 
 /Next 43 0 R
 
 /Parent 33 0 R
 
 /Prev 41 0 R
 
 /Next 46 0 R
 
 /Parent 36 0 R
 
 /Prev 44 0 R
 
 /Title (simplugin.h) >>
 
endobj
 
% 'Outline.26.9': class OutlineEntryObject 
 
43 0 obj
 
% 'Outline.30.9': class OutlineEntryObject 
 
46 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 611.8236
 
 0 ]
 
 /Next 44 0 R
 
 /Parent 33 0 R
 
 /Prev 42 0 R
 
 /Next 47 0 R
 
 /Parent 36 0 R
 
 /Prev 45 0 R
 
 /Title (simplugin.cpp) >>
 
endobj
 
% 'Outline.26.10': class OutlineEntryObject 
 
44 0 obj
 
% 'Outline.30.10': class OutlineEntryObject 
 
47 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 530.6236
 
 0 ]
 
 /Parent 33 0 R
 
 /Prev 43 0 R
 
 /Parent 36 0 R
 
 /Prev 46 0 R
 
 /Title (xmlwrite.cpp) >>
 
endobj
 
% 'Outline.4': class OutlineEntryObject 
 
45 0 obj
 
48 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 482.6236
 
 0 ]
 
 /Next 46 0 R
 
 /Parent 29 0 R
 
 /Prev 33 0 R
 
 /Next 49 0 R
 
 /Parent 32 0 R
 
 /Prev 36 0 R
 
 /Title (Wednesday 6 October 2010) >>
 
endobj
 
% 'Outline.5': class OutlineEntryObject 
 
46 0 obj
 
49 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 431.6236
 
 0 ]
 
 /Next 47 0 R
 
 /Parent 29 0 R
 
 /Prev 45 0 R
 
 /Next 50 0 R
 
 /Parent 32 0 R
 
 /Prev 48 0 R
 
 /Title (Thursday 7 October 2010) >>
 
endobj
 
% 'Outline.6': class OutlineEntryObject 
 
47 0 obj
 
50 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 368.6236
 
 0 ]
 
 /Next 48 0 R
 
 /Parent 29 0 R
 
 /Prev 46 0 R
 
 /Next 51 0 R
 
 /Parent 32 0 R
 
 /Prev 49 0 R
 
 /Title (Friday 8 October 2010) >>
 
endobj
 
% 'Outline.7': class OutlineEntryObject 
 
48 0 obj
 
51 0 obj
 
<< /Count 3
 
 /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 299.6236
 
 0 ]
 
 /First 49 0 R
 
 /Last 51 0 R
 
 /Next 52 0 R
 
 /Parent 29 0 R
 
 /Prev 47 0 R
 
 /First 52 0 R
 
 /Last 54 0 R
 
 /Next 55 0 R
 
 /Parent 32 0 R
 
 /Prev 50 0 R
 
 /Title (Monday 11 October 2010) >>
 
endobj
 
% 'Outline.27.0': class OutlineEntryObject 
 
49 0 obj
 
% 'Outline.31.0': class OutlineEntryObject 
 
52 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 266.6236
 
 0 ]
 
 /Next 50 0 R
 
 /Parent 48 0 R
 
 /Next 53 0 R
 
 /Parent 51 0 R
 
 /Title (Mercurial hooks) >>
 
endobj
 
% 'Outline.27.1': class OutlineEntryObject 
 
50 0 obj
 
% 'Outline.31.1': class OutlineEntryObject 
 
53 0 obj
 
<< /Dest [ 14 0 R
 
 /XYZ
 
 62.69291
 
 170.6236
 
 0 ]
 
 /Next 51 0 R
 
 /Parent 48 0 R
 
 /Prev 49 0 R
 
 /Next 54 0 R
 
 /Parent 51 0 R
 
 /Prev 52 0 R
 
 /Title (Mercurial Repositories) >>
 
endobj
 
% 'Outline.27.2': class OutlineEntryObject 
 
51 0 obj
 
% 'Outline.31.2': class OutlineEntryObject 
 
54 0 obj
 
<< /Dest [ 24 0 R
 
 /XYZ
 
 62.69291
 
 401.7994
 
 0 ]
 
 /Parent 48 0 R
 
 /Prev 50 0 R
 
 /Parent 51 0 R
 
 /Prev 53 0 R
 
 /Title (RE-INSTALL) >>
 
endobj
 
% 'Outline.8': class OutlineEntryObject 
 
52 0 obj
 
55 0 obj
 
<< /Count 2
 
 /Dest [ 26 0 R
 
 /Dest [ 27 0 R
 
 /XYZ
 
 62.69291
 
 606.0236
 
 0 ]
 
 /First 53 0 R
 
 /Last 54 0 R
 
 /Parent 29 0 R
 
 /Prev 48 0 R
 
 /First 56 0 R
 
 /Last 57 0 R
 
 /Next 58 0 R
 
 /Parent 32 0 R
 
 /Prev 51 0 R
 
 /Title (Tuesday 12 October 2010) >>
 
endobj
 
% 'Outline.28.0': class OutlineEntryObject 
 
53 0 obj
 
<< /Dest [ 26 0 R
 
% 'Outline.32.0': class OutlineEntryObject 
 
56 0 obj
 
<< /Dest [ 27 0 R
 
 /XYZ
 
 62.69291
 
 573.0236
 
 0 ]
 
 /Next 54 0 R
 
 /Parent 52 0 R
 
 /Next 57 0 R
 
 /Parent 55 0 R
 
 /Title (RhodeCode) >>
 
endobj
 
% 'Outline.28.1': class OutlineEntryObject 
 
54 0 obj
 
<< /Dest [ 26 0 R
 
% 'Outline.32.1': class OutlineEntryObject 
 
57 0 obj
 
<< /Dest [ 27 0 R
 
 /XYZ
 
 62.69291
 
 525.0236
 
 0 ]
 
 /Parent 52 0 R
 
 /Prev 53 0 R
 
 /Parent 55 0 R
 
 /Prev 56 0 R
 
 /Title (SED-ML L1V1RC1) >>
 
endobj
 
% 'R55': class PDFPages 
 
55 0 obj
 
% 'Outline.9': class OutlineEntryObject 
 
58 0 obj
 
<< /Dest [ 27 0 R
 
 /XYZ
 
 62.69291
 
 441.0236
 
 0 ]
 
 /Next 59 0 R
 
 /Parent 32 0 R
 
 /Prev 55 0 R
 
 /Title (Wednesday 13 October 2010) >>
 
endobj
 
% 'Outline.10': class OutlineEntryObject 
 
59 0 obj
 
<< /Count 2
 
 /Dest [ 27 0 R
 
 /XYZ
 
 62.69291
 
 342.0236
 
 0 ]
 
 /First 60 0 R
 
 /Last 61 0 R
 
 /Parent 32 0 R
 
 /Prev 58 0 R
 
 /Title (Friday 15 October 2010) >>
 
endobj
 
% 'Outline.33.0': class OutlineEntryObject 
 
60 0 obj
 
<< /Dest [ 27 0 R
 
 /XYZ
 
 62.69291
 
 309.0236
 
 0 ]
 
 /Next 61 0 R
 
 /Parent 59 0 R
 
 /Title (Rhodecode) >>
 
endobj
 
% 'Outline.33.1': class OutlineEntryObject 
 
61 0 obj
 
<< /Dest [ 29 0 R
 
 /XYZ
 
 62.69291
 
 442.3562
 
 0 ]
 
 /Parent 59 0 R
 
 /Prev 60 0 R
 
 /Title (The Virtual Leaf) >>
 
endobj
 
% 'R62': class PDFPages 
 
62 0 obj
 
% page tree
 
<< /Count 5
 
<< /Count 6
 
 /Kids [ 4 0 R
 
 6 0 R
 
 14 0 R
 
 24 0 R
 
 26 0 R ]
 
 27 0 R
 
 29 0 R ]
 
 /Type /Pages >>
 
endobj
 
% 'R56': class PDFStream 
 
56 0 obj
 
% 'R63': class PDFStream 
 
63 0 obj
 
% page stream
 
<< /Length 8892 >>
 
stream
 
1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
 
q
 
1 0 0 1 62.69291 729.0236 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 9.64 Tm /F2 20 Tf 24 TL (The Virtual Leaf) Tj T* ET
 
Q
 
Q
 
q
 
@@ -1283,26 +1384,26 @@ Q
 
Q
 
q
 
1 0 0 1 56.69291 56.69291 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (1) Tj T* -238.1649 0 Td ET
 
Q
 
Q
 
 
 
endstream
 
 
endobj
 
% 'R57': class PDFStream 
 
57 0 obj
 
% 'R64': class PDFStream 
 
64 0 obj
 
% page stream
 
<< /Length 4804 >>
 
stream
 
1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
 
q
 
1 0 0 1 62.69291 735.0236 cm
 
q
 
BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (auxingrowthplugin.h) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 705.0236 cm
 
@@ -1464,26 +1565,26 @@ Q
 
Q
 
q
 
1 0 0 1 56.69291 56.69291 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (2) Tj T* -238.1649 0 Td ET
 
Q
 
Q
 
 
 
endstream
 
 
endobj
 
% 'R58': class PDFStream 
 
58 0 obj
 
% 'R65': class PDFStream 
 
65 0 obj
 
% page stream
 
<< /Length 6652 >>
 
stream
 
1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
 
q
 
1 0 0 1 62.69291 735.0236 cm
 
q
 
BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (modelcatalogue.cpp) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 717.0236 cm
 
@@ -1796,28 +1897,28 @@ Q
 
Q
 
q
 
1 0 0 1 56.69291 56.69291 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (3) Tj T* -238.1649 0 Td ET
 
Q
 
Q
 
 
 
endstream
 
 
endobj
 
% 'R59': class PDFStream 
 
59 0 obj
 
% 'R66': class PDFStream 
 
66 0 obj
 
% page stream
 
<< /Length 14133 >>
 
<< /Length 14140 >>
 
stream
 
1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
 
q
 
1 0 0 1 62.69291 735.0236 cm
 
0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET
 
Q
 
@@ -2288,25 +2389,25 @@ 0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL .1 0 Td (12.) Tj T* -0.1 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 23 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (tar xzf PyQt-x11-gpl-4.7.7) Tj T* ET
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (tar xzf PyQt-x11-gpl-4.7.7.tar.gz) Tj T* ET
 
Q
 
Q
 
q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 194.7994 cm
 
Q
 
q
 
1 0 0 1 62.69291 197.7994 cm
 
Q
 
q
 
@@ -2505,28 +2606,28 @@ Q
 
Q
 
q
 
1 0 0 1 56.69291 56.69291 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (4) Tj T* -238.1649 0 Td ET
 
Q
 
Q
 
 
 
endstream
 
 
endobj
 
% 'R60': class PDFStream 
 
60 0 obj
 
% 'R67': class PDFStream 
 
67 0 obj
 
% page stream
 
<< /Length 3604 >>
 
<< /Length 7872 >>
 
stream
 
1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
 
q
 
1 0 0 1 62.69291 735.0236 cm
 
0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL .1 0 Td (20.) Tj T* -0.1 0 Td ET
 
Q
 
@@ -2664,86 +2765,470 @@ 1 0 0 1 62.69291 507.0236 cm
 
q
 
BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (SED-ML L1V1RC1) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 453.0236 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL 1.259318 Tw (Walking through the new SED-ML schema I see that they've dropped the generic simulation class and) Tj T* 0 Tw .36152 Tw (added AddXML and RemoveXML model change classes. Adding several more SED-ML examples for the) Tj T* 0 Tw .223735 Tw (symposium might still be justified - though they become obsolete the moment I introduce the new schema) Tj T* 0 Tw (changes.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 420.0236 cm
 
q
 
BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Wednesday 13 October 2010) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 390.0236 cm
 
q
 
BT 1 0 0 1 0 16.82 Tm .521976 Tw 12 TL /F1 10 Tf 0 0 0 rg (Tweaked ) Tj /F3 10 Tf (.bashrc ) Tj /F1 10 Tf (and ) Tj /F3 10 Tf (virtualenvwrapper.sh ) Tj /F1 10 Tf (to facilitate virtualenv and virtualenvwrapper - many) Tj T* 0 Tw (unbound variables!) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 372.0236 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Pushed recent changes to repository from where Roeland can retrieve and test them.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 354.0236 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (OK. RhodeCode RC4 works out of the box, excepting cutehg and PyQt4.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 321.0236 cm
 
q
 
BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Friday 15 October 2010) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 291.0236 cm
 
q
 
BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Rhodecode) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 261.0236 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 4.18186 Tw (Installing RhodeCode locally on the nhypnos is a real pain. In addition to the previous list of) Tj T* 0 Tw (dependencies, for the caterpie, add these for the nhypnos:) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 261.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 261.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 243.0236 cm
 
0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 23 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Python) Tj T* ET
 
Q
 
Q
 
q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 243.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 246.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 228.0236 cm
 
0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 23 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Bison \(for sip\)) Tj T* ET
 
Q
 
Q
 
q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 228.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 231.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 213.0236 cm
 
0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 23 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Flex \(for sip\)) Tj T* ET
 
Q
 
Q
 
q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 213.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 216.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 198.0236 cm
 
0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 23 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (m4 \(for Bison\)) Tj T* ET
 
Q
 
Q
 
q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 198.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 201.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 183.0236 cm
 
0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (5.) Tj T* -5.66 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 23 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Qt \(for PyQt\)) Tj T* ET
 
Q
 
Q
 
q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 183.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 186.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 168.0236 cm
 
0 0 0 rg
 
BT /F1 10 Tf 12 TL ET
 
q
 
1 0 0 1 6 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (6.) Tj T* -5.66 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 23 3 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (GLIBCXX_3.4.9 \(for Qt\) - I draw the line at \(re\)installing GCC!) Tj T* ET
 
Q
 
Q
 
q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 168.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 168.0236 cm
 
Q
 
q
 
1 0 0 1 62.69291 150.0236 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (OK. Forget sip bison, flex, m4, Qt and the rest. Let's install just the minimum.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 120.0236 cm
 
q
 
BT 1 0 0 1 0 16.82 Tm 3.99561 Tw 12 TL /F1 10 Tf 0 0 0 rg (First, install sqlite; we'll see in a minute that Python requires it. The sources are available at:) Tj T* 0 Tw 0 0 .501961 rg (http://www.sqlite.org/download.html) Tj 0 0 0 rg (.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 102.0236 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Second, install Python. My initial attempt complained it was missing the following bits and pieces:) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 56.69291 773.1969 cm
 
q
 
BT 1 0 0 1 0 4.82 Tm 205.6499 0 Td 12 TL /F1 10 Tf 0 0 0 rg (The Virtual Leaf) Tj T* -205.6499 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 56.69291 56.69291 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (5) Tj T* -238.1649 0 Td ET
 
Q
 
Q
 
 
 
endstream
 
 
endobj
 
% 'R61': class PDFPageLabels 
 
61 0 obj
 
% 'R68': class PDFStream 
 
68 0 obj
 
% page stream
 
<< /Length 4572 >>
 
stream
 
1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
 
q
 
1 0 0 1 62.69291 688.7562 cm
 
q
 
q
 
.87797 0 0 .87797 0 0 cm
 
q
 
1 0 0 1 6.6 7.517338 cm
 
q
 
.662745 .662745 .662745 RG
 
.5 w
 
.960784 .960784 .862745 rg
 
n -6 -6 534 72 re B*
 
Q
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 53.71 Tm /F3 10 Tf 12 TL (Python build finished, but the necessary bits to build these modules were not found:) Tj T* (_bsddb             _sqlite3           _ssl) Tj T* (_tkinter           bsddb185           dl) Tj T* (imageop            readline           sunaudiodev) Tj T* (To find the necessary bits, look in setup.py in detect_modules\(\) for the module's name.) Tj T* ET
 
Q
 
Q
 
Q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 656.7562 cm
 
q
 
BT 1 0 0 1 0 16.82 Tm 1.528876 Tw 12 TL /F1 10 Tf 0 0 0 rg (So install sqlite first. And, since Python's configure script doesn't have an option for it, I had to tweak) Tj T* 0 Tw /F3 10 Tf (setup.py ) Tj /F1 10 Tf (to enumerate the path where it would find sqlite;) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 626.7562 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .757318 Tw (Third, install RhodeCode. I first installed it using easy_install, but while the result worked, the changelog) Tj T* 0 Tw (view did not display the branch/merge graphics. I then cloned the code from its bitbucket repository:) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 593.5562 cm
 
q
 
q
 
1 0 0 1 0 0 cm
 
q
 
1 0 0 1 6.6 6.6 cm
 
q
 
.662745 .662745 .662745 RG
 
.5 w
 
.960784 .960784 .862745 rg
 
n -6 -6 468.6898 24 re B*
 
Q
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 5.71 Tm /F3 10 Tf 12 TL (clone https://litsol@bitbucket.org/marcinkuzminski/rhodecode) Tj T* ET
 
Q
 
Q
 
Q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 573.5562 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Replacing the egg installed by easy_install by this code does display the branch/merge graphics.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 543.5562 cm
 
q
 
BT 1 0 0 1 0 16.82 Tm 12.02698 Tw 12 TL /F1 10 Tf 0 0 0 rg (Fourth, setup and serve rhodecode. Following the instructions posted online at:) Tj T* 0 Tw 0 0 .501961 rg (http://packages.python.org/RhodeCode/setup.html#setup ) Tj 0 0 0 rg (works as advertised:) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 486.3562 cm
 
q
 
q
 
1 0 0 1 0 0 cm
 
q
 
1 0 0 1 6.6 6.6 cm
 
q
 
.662745 .662745 .662745 RG
 
.5 w
 
.960784 .960784 .862745 rg
 
n -6 -6 468.6898 48 re B*
 
Q
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 29.71 Tm /F3 10 Tf 12 TL (paster make-config RhodeCode production.ini) Tj T* (paster setup-app production.ini) Tj T* (paster serve production.ini) Tj T* ET
 
Q
 
Q
 
Q
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 454.3562 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 3.12229 Tw (All that's left is an apache rewrite rule directing virtualleaf.project.cwi.nl/repository to port 5000, or) Tj T* 0 Tw (whaterver we change it to, on the nhypnos.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 424.3562 cm
 
q
 
BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (The Virtual Leaf) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 382.3562 cm
 
q
 
BT 1 0 0 1 0 28.82 Tm 7.784252 Tw 12 TL /F1 10 Tf 0 0 0 rg (Added ) Tj /F3 10 Tf (incrementIterations\(\)) Tj /F1 10 Tf (, ) Tj /F3 10 Tf (getIterations\(\) ) Tj /F1 10 Tf (and ) Tj /F3 10 Tf (int iterations ) Tj /F1 10 Tf (to mesh.h.) Tj T* 0 Tw .443976 Tw /F3 10 Tf (incrementIterations\(\) ) Tj /F1 10 Tf (is called in TIMESTEP in VirtualLeaf.cpp. The actual counter, ) Tj /F3 10 Tf (iterations) Tj T* 0 Tw /F1 10 Tf (is initalized to zero in the Mesh class constructor.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 340.3562 cm
 
q
 
BT 1 0 0 1 0 28.82 Tm 7.118443 Tw 12 TL /F1 10 Tf 0 0 0 rg (The iterations are inquired in two places: for the frame count in ) Tj /F3 10 Tf (MainBase::Plot ) Tj /F1 10 Tf (in) Tj T* 0 Tw .209974 Tw /F3 10 Tf (VirtualLeaf.cpp` and for the export cell data interval in ``Main::TimeStepWrap) Tj T* 0 Tw /F1 10 Tf (in ) Tj /F3 10 Tf (canvas.cpp) Tj /F1 10 Tf (.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 62.69291 298.3562 cm
 
q
 
BT 1 0 0 1 0 28.82 Tm 2.41061 Tw 12 TL /F1 10 Tf 0 0 0 rg (The questions remain: Should we use this count, and if yes, where should it be incremented? The) Tj T* 0 Tw 9.067976 Tw (previous count was incremented in ) Tj /F3 10 Tf (Main::TimeStepWrap) Tj /F1 10 Tf (. Or should we simply use) Tj T* 0 Tw /F3 10 Tf (\(int\)mesh.getTime\(\)) Tj /F1 10 Tf (? Since this is not an ordinal count, the results look strange.) Tj T* ET
 
Q
 
Q
 
q
 
1 0 0 1 56.69291 773.1969 cm
 
q
 
BT 1 0 0 1 0 4.82 Tm 205.6499 0 Td 12 TL /F1 10 Tf 0 0 0 rg (The Virtual Leaf) Tj T* -205.6499 0 Td ET
 
Q
 
Q
 
q
 
1 0 0 1 56.69291 56.69291 cm
 
q
 
0 0 0 rg
 
BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (6) Tj T* -238.1649 0 Td ET
 
Q
 
Q
 
 
 
endstream
 
 
endobj
 
% 'R69': class PDFPageLabels 
 
69 0 obj
 
% Document Root
 
<< /Nums [ 0
 
 62 0 R
 
 70 0 R
 
 1
 
 63 0 R
 
 71 0 R
 
 2
 
 64 0 R
 
 72 0 R
 
 3
 
 65 0 R
 
 73 0 R
 
 4
 
 66 0 R ] >>
 
 74 0 R
 
 5
 
 75 0 R ] >>
 
endobj
 
% 'R62': class PDFPageLabel 
 
62 0 obj
 
% 'R70': class PDFPageLabel 
 
70 0 obj
 
% None
 
<< /S /D
 
 /St 1 >>
 
endobj
 
% 'R63': class PDFPageLabel 
 
63 0 obj
 
% 'R71': class PDFPageLabel 
 
71 0 obj
 
% None
 
<< /S /D
 
 /St 2 >>
 
endobj
 
% 'R64': class PDFPageLabel 
 
64 0 obj
 
% 'R72': class PDFPageLabel 
 
72 0 obj
 
% None
 
<< /S /D
 
 /St 3 >>
 
endobj
 
% 'R65': class PDFPageLabel 
 
65 0 obj
 
% 'R73': class PDFPageLabel 
 
73 0 obj
 
% None
 
<< /S /D
 
 /St 4 >>
 
endobj
 
% 'R66': class PDFPageLabel 
 
66 0 obj
 
% 'R74': class PDFPageLabel 
 
74 0 obj
 
% None
 
<< /S /D
 
 /St 5 >>
 
endobj
 
% 'R75': class PDFPageLabel 
 
75 0 obj
 
% None
 
<< /S /D
 
 /St 6 >>
 
endobj
 
xref
 
0 67
 
0 76
 
0000000000 65535 f
 
0000000113 00000 n
 
0000000233 00000 n
 
0000000398 00000 n
 
0000000571 00000 n
 
0000000852 00000 n
 
0000001011 00000 n
 
0000001304 00000 n
 
0000001556 00000 n
 
0000001839 00000 n
 
0000002088 00000 n
 
0000002343 00000 n
 
@@ -2752,64 +3237,73 @@ 0000002863 00000 n
 
0000003114 00000 n
 
0000003480 00000 n
 
0000003725 00000 n
 
0000003978 00000 n
 
0000004229 00000 n
 
0000004489 00000 n
 
0000004741 00000 n
 
0000004989 00000 n
 
0000005249 00000 n
 
0000005551 00000 n
 
0000005797 00000 n
 
0000006185 00000 n
 
0000006436 00000 n
 
0000006738 00000 n
 
0000006897 00000 n
 
0000007125 00000 n
 
0000007251 00000 n
 
0000007430 00000 n
 
0000007629 00000 n
 
0000007828 00000 n
 
0000008072 00000 n
 
0000008248 00000 n
 
0000008445 00000 n
 
0000008638 00000 n
 
0000008824 00000 n
 
0000009012 00000 n
 
0000009196 00000 n
 
0000009382 00000 n
 
0000009579 00000 n
 
0000009769 00000 n
 
0000009962 00000 n
 
0000010135 00000 n
 
0000010335 00000 n
 
0000010534 00000 n
 
0000010731 00000 n
 
0000010974 00000 n
 
0000011153 00000 n
 
0000011354 00000 n
 
0000011525 00000 n
 
0000011754 00000 n
 
0000011927 00000 n
 
0000012086 00000 n
 
0000012228 00000 n
 
0000021221 00000 n
 
0000026126 00000 n
 
0000032879 00000 n
 
0000047114 00000 n
 
0000050823 00000 n
 
0000050968 00000 n
 
0000051045 00000 n
 
0000051122 00000 n
 
0000051199 00000 n
 
0000051276 00000 n
 
0000006451 00000 n
 
0000006691 00000 n
 
0000007016 00000 n
 
0000007274 00000 n
 
0000007576 00000 n
 
0000007735 00000 n
 
0000007963 00000 n
 
0000008089 00000 n
 
0000008268 00000 n
 
0000008467 00000 n
 
0000008666 00000 n
 
0000008910 00000 n
 
0000009086 00000 n
 
0000009283 00000 n
 
0000009476 00000 n
 
0000009662 00000 n
 
0000009850 00000 n
 
0000010034 00000 n
 
0000010220 00000 n
 
0000010417 00000 n
 
0000010607 00000 n
 
0000010800 00000 n
 
0000010973 00000 n
 
0000011173 00000 n
 
0000011372 00000 n
 
0000011569 00000 n
 
0000011812 00000 n
 
0000011991 00000 n
 
0000012192 00000 n
 
0000012363 00000 n
 
0000012607 00000 n
 
0000012780 00000 n
 
0000012955 00000 n
 
0000013157 00000 n
 
0000013385 00000 n
 
0000013558 00000 n
 
0000013719 00000 n
 
0000013870 00000 n
 
0000022863 00000 n
 
0000027768 00000 n
 
0000034521 00000 n
 
0000048763 00000 n
 
0000056736 00000 n
 
0000061413 00000 n
 
0000061571 00000 n
 
0000061648 00000 n
 
0000061725 00000 n
 
0000061802 00000 n
 
0000061879 00000 n
 
0000061956 00000 n
 
trailer
 
<< /ID 
 
 % ReportLab generated PDF document -- digest (http://www.reportlab.com) 
 
 [(\002\015b\216\002\016\216\222,\316k\030\021\317\316@) (\002\015b\216\002\016\216\222,\316k\030\021\317\316@)] 
 
 [(\216\375C\374\237e3\302\016\020\3752\364q\006\373) (\216\375C\374\237e3\302\016\020\3752\364q\006\373)] 
 
 
 /Info 28 0 R
 
 /Root 27 0 R
 
 /Size 67 >>
 
 /Info 31 0 R
 
 /Root 30 0 R
 
 /Size 76 >>
 
startxref
 
51323
 
62003
 
%%EOF
doc/v1.rst
Show inline comments
 
@@ -283,37 +283,37 @@ All goes tolerably until you tick in the
 
RE-INSTALL
 
++++++++++
 

	
 
1. easy_install mercurial
 
2. mkdir src
 
3. cd src
 
4. hg clone http://www.riverbankcomputing.com/hg/sip
 
5. cd sip
 
6. python build.py prepare
 
7. python configure.py
 
8. make
 
9. make install
 
10. cd ..
 
10. cd \.\.
 
11. wget http://www.riverbankcomputing.com/static/Downloads/PyQt4/PyQt-x11-gpl-4.7.7.tar.gz
 
12. tar xzf PyQt-x11-gpl-4.7.7
 
12. tar xzf PyQt-x11-gpl-4.7.7.tar.gz
 
13. cd PyQt-x11-gpl-4.7.7
 
14. python configure.py
 
15. make
 
16. make install
 
17. cd ..
 
17. cd \.\.
 
18. hg clone https://litsol@bitbucket.org/bfrog/cutehg
 
19. cd cutehg
 
20. python setup.py build
 
21. python setup.py install
 
22. cd ..
 
22. cd \.\.
 
23. easy_install rhodecode, http://pypi.python.org/pypi/RhodeCode/1.0.0rc2
 

	
 

	
 
This procedure fails as before. 
 

	
 
However, upon inspection I saw that the i18n directory was missing
 
from my build but present in the rhodecode clone from bitbucket. While
 
I think that the ``easy_install rhodecode`` invocation is necessary to
 
install the various subsidiary packages, moving the cloned rhodecode
 
into the site-packages directory seems to have made most functionality
 
work. e.g. graphical logs and diff highlighting.
 

	
 
@@ -341,12 +341,90 @@ introduce the new schema changes.
 

	
 
Wednesday 13 October 2010
 
-------------------------
 

	
 
Tweaked ``.bashrc`` and ``virtualenvwrapper.sh`` to facilitate
 
virtualenv and virtualenvwrapper - many unbound variables!
 

	
 
Pushed recent changes to repository from where Roeland can retrieve
 
and test them.
 

	
 
OK. RhodeCode RC4 works out of the box, excepting cutehg and PyQt4.
 

	
 

	
 

	
 
Friday 15 October 2010
 
----------------------
 

	
 
Rhodecode
 
+++++++++
 

	
 
Installing RhodeCode locally on the nhypnos is a real pain. In
 
addition to the previous list of dependencies, for the caterpie, add
 
these for the nhypnos:
 

	
 
1. Python
 
2. Bison (for sip)
 
3. Flex (for sip)
 
4. m4 (for Bison)
 
5. Qt (for PyQt)
 
6. GLIBCXX_3.4.9 (for Qt) - I draw the line at (re)installing GCC!
 

	
 
OK. Forget sip bison, flex, m4, Qt and the rest. Let's install just
 
the minimum.
 

	
 
First, install sqlite; we'll see in a minute that Python requires
 
it. The sources are available at: http://www.sqlite.org/download.html.
 

	
 
Second, install Python. My initial attempt complained it was missing
 
the following bits and pieces::
 

	
 
 Python build finished, but the necessary bits to build these modules were not found:
 
 _bsddb             _sqlite3           _ssl            
 
 _tkinter           bsddb185           dl              
 
 imageop            readline           sunaudiodev     
 
 To find the necessary bits, look in setup.py in detect_modules() for the module's name.
 

	
 
So install sqlite first. And, since Python's configure script doesn't
 
have an option for it, I had to tweak ``setup.py`` to enumerate the
 
path where it would find sqlite;
 

	
 
Third, install RhodeCode. I first installed it using easy_install, but
 
while the result worked, the changelog view did not display the
 
branch/merge graphics. I then cloned the code from its bitbucket repository::
 

	
 
 clone https://litsol@bitbucket.org/marcinkuzminski/rhodecode
 

	
 
Replacing the egg installed by easy_install by this code does display
 
the branch/merge graphics.
 

	
 
Fourth, setup and serve rhodecode. Following the instructions posted
 
online at: http://packages.python.org/RhodeCode/setup.html#setup works as advertised::
 

	
 
 paster make-config RhodeCode production.ini
 
 paster setup-app production.ini
 
 paster serve production.ini
 

	
 
All that's left is an apache rewrite rule directing
 
virtualleaf.project.cwi.nl/repository to port 5000, or whaterver we
 
change it to, on the nhypnos.
 

	
 

	
 
The Virtual Leaf
 
++++++++++++++++
 

	
 
Added ``incrementIterations()``, ``getIterations()`` and ``int
 
iterations`` to mesh.h. ``incrementIterations()`` is called in TIMESTEP in
 
VirtualLeaf.cpp. The actual counter, ``iterations`` is initalized to
 
zero in the Mesh class constructor.
 

	
 
The iterations are inquired in two places: for the frame count in
 
``MainBase::Plot`` in ``VirtualLeaf.cpp` and for the export cell data
 
interval in ``Main::TimeStepWrap`` in ``canvas.cpp``.
 

	
 
The questions remain: Should we use this count, and if yes, where
 
should it be incremented? The previous count was incremented in
 
``Main::TimeStepWrap``. Or should we simply use
 
``(int)mesh.getTime()``? Since this is not an ordinal count, the
 
results look strange.
 

	
 

	
src/ChangeLog
Show inline comments
 
2010-10-15    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* mesh.h (Mesh): Added iterations. incrementIterations() and
 
	getIterations().
 

	
 
	* VirtualLeaf.cpp (Plot): Replaced local frame counter with
 
	mesh.incrementIterations().
 

	
 
	* canvas.cpp (TimeStepWrap): Replaced local counter with
 
	mesh.incrementIterations().
 

	
 
2010-10-14    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* VirtualLeaf.pro: Turned debug off to make all profiles must be
 
	consistant.
 

	
 
	* VirtualLeaf-install.nsi: Tweaked paths to coincide with UNIX
 
	distribution, i.e. VirtualLeaf.exe, its libraries, models, and the
 
	uninstaller all go in the bin directory. And leaves directory
 
	placed under data directory.
 

	
 
	* canvas.cpp (exportCellData): Added a check to inquire before
 
	overwritting an existing file.
 

	
 

	
 
2010-10-14    <merks@cwi.nl>
 

	
 
	* mesh.cpp: In response to referees' comments, added new parameter "yield_threshold" instead of fixed parameter '4' for yield threshold. 
 
	* mesh.cpp: In response to referees' comments, added new parameter
 
	"yield_threshold" instead of fixed parameter '4' for yield
 
	threshold.
 

	
 
	* wallitem.cpp: when clicking a wall, both the wall type was cycled and the transporterdialog popped up. Corrected this - for wall type cycling, hold the Control button while left clicking. TransporterDialog only pops up for left click. Also made sure the wall is redrawn after changing the transporter values.
 
	
 
	* wallitem.cpp: when clicking a wall, both the wall type was
 
	cycled and the transporterdialog popped up. Corrected this - for
 
	wall type cycling, hold the Control button while left
 
	clicking. TransporterDialog only pops up for left click. Also made
 
	sure the wall is redrawn after changing the transporter values.
 

	
 
	* cell.cpp (DivideWalls): accomodated for rename of Circumference -> WallCircumference
 

	
 
	* hull.h: added an operator< to sort Points
 

	
 
	* hull.cpp: added an operator< to sort Points
 

	
 
	* cellbase.cpp (ExactCircumference): I added a new function
 
	ExactCircumference, yielding the circumference of the cell along
 
	its wall_elements
 

	
 
	* VirtualLeaf.cpp: adjust info_string to accomodate for new name
src/VirtualLeaf.cpp
Show inline comments
 
@@ -171,52 +171,54 @@ void MainBase::Plot(int resize_stride)
 

	
 
/*  if (ShowApoplastsP()) 
 
    mesh.LoopWalls( bind2nd( mem_fun_ref( &Wall::DrawApoplast ), &canvas ) );
 
*/
 
  if (ShowMeshP()) 
 
    mesh.DrawNodes(&canvas);
 

	
 
  if (ShowBoundaryOnlyP()) 
 
    mesh.DrawBoundary(&canvas);
 

	
 
  if ( ( batch || MovieFramesP() )) {
 

	
 
    static int frame = 0;
 
     static int frame = 0;
 
    // frame numbers are sequential for the most frequently written file type.
 
    // for the less frequently written file type they match the other type
 
    if (!(count%par.storage_stride) )  {
 

	
 
      stringstream fname;
 
      fname << par.datadir << "/leaf.";
 
      fname.fill('0');
 
      fname.width(6);
 

	
 
      fname << frame << ".jpg";
 
      if (par.storage_stride <= par.xml_storage_stride) {
 
	frame++;
 
	//frame = (int)mesh.getTime();
 
	frame = mesh.getIterations();
 
      }
 

	
 
      // Write high-res JPG snapshot every plot step
 
      Save(fname.str().c_str(), "JPEG",1024,768);
 
    }
 

	
 
    if (!(count%par.xml_storage_stride)) {
 
      stringstream fname;
 
      fname << par.datadir << "/leaf.";
 
      fname.fill('0');
 
      fname.width(6);
 
      fname << frame << ".xml";
 

	
 
      if (par.xml_storage_stride < par.storage_stride) {
 
	frame++;
 
	//frame = (int)mesh.getTime();
 
	frame = mesh.getIterations();
 
      }
 
      // Write XML file every ten plot steps
 
      mesh.XMLSave(fname.str().c_str(), XMLSettingsTree());
 
    }
 
  }
 
 count++;
 
}
 

	
 

	
 

	
 
INIT {
 

	
 
@@ -273,24 +275,25 @@ TIMESTEP {
 
      //mesh.LoopCurrentCells(mem_fun(&plugin->CellHouseKeeping)); // this includes cell division
 

	
 
      // Reaction diffusion	
 
      mesh.ReactDiffuse(par.rd_dt);
 
      t++;
 
      Plot(par.resize_stride);
 
    }
 
  } else {
 
    mesh.ReactDiffuse(par.rd_dt);
 
    Plot(par.resize_stride);
 
  }
 
  i++;
 
  mesh.incrementIterations(); // WHERE SHOULD THIS GO?!
 
  return mesh.getTime();
 
}
 

	
 

	
 

	
 
/* Called if a cell is clicked */
 
void Cell::OnClick(QMouseEvent *e){}
 

	
 

	
 
/* Custom message handler - Default appends a newline character to the end of each line. */ 
 
void vlMessageOutput(QtMsgType type, const char *msg)
 
{
src/canvas.cpp
Show inline comments
 
@@ -575,24 +575,25 @@ Main::Main(QGraphicsScene& c, Mesh &m, Q
 
  // Start timer which repetitively invokes
 
  // a simulation time step
 
  timer = new QTimer( this );
 
  connect( timer, SIGNAL(timeout()), SLOT(TimeStepWrap()) );
 

	
 
  stopSimulation();
 
  statusBar()->addWidget(new QLabel("Ready."));
 
  setCaption(caption);
 
  gifanim = 0;
 

	
 
  infobar = new InfoBar();
 
  addDockWindow(infobar);
 

	
 
}
 

	
 
void Main::RefreshInfoBar(void)
 
{
 
  infobar->SetText(mesh.ModelID());
 
}
 

	
 

	
 
void Main::UserMessage(QString message, int timeout)
 
{
 
  statusBar()->showMessage(message, timeout);
 
}
 
@@ -1156,40 +1157,43 @@ void Main::print()
 
    if (cw>ch) {
 
      pp.scale(vp.width()/(2*cw*Cell::Magnification()), vp.width()/(2*cw*Cell::Magnification()));
 
    } else {
 
      pp.scale(vp.height()/(2*ch*Cell::Magnification()), vp.height()/(2*ch*Cell::Magnification()));
 
    }
 
    canvas.render(&pp, QRectF(), QRectF(0.,0.,canvas.width(),canvas.height()));
 
  }
 
}
 

	
 

	
 
void Main::TimeStepWrap(void)
 
{
 
  static int t=0;
 
  static int t;
 
  stringstream fname;
 

	
 
  TimeStep();
 
  t++;
 

	
 
  if ((par.export_interval > 0) && ((t % par.export_interval) == 0)){
 
  //mesh.incrementIterations();
 
  t = mesh.getIterations();
 
  //t = (int)mesh.getTime();
 

	
 
  if ((par.export_interval > 0) && !(t%par.export_interval)){
 
    fname << par.datadir << "/" << par.export_fn_prefix;
 
    fname.fill('0');
 
    fname.width(6);
 
    fname << t << ".csv";
 
    this->exportCellData(QString(fname.str().c_str()));
 
  }
 

	
 
  // check number of timesteps
 
  if (t==par.nit) {
 
  if (t == par.nit) {
 
    emit SimulationDone();
 
  }
 
}
 

	
 

	
 
void Main::RestartSim(void)
 
{
 

	
 
  stopSimulation();
 
  if ( QMessageBox::question(
 
			     this,
 
			     tr("Restart simulation?"),
src/canvas.h
Show inline comments
 
@@ -127,25 +127,24 @@ class Main : public Q3MainWindow, public
 
  virtual bool InsertModeP(void) { return options->isItemChecked(insert_mode_id); }
 
  virtual bool ShowToolTipsP(void) { return helpmenu->isItemChecked(tooltips_id); }
 
  virtual bool HideCellsP(void) { return view->isItemChecked(hide_cells_id); }
 
  void scale(double factor); 
 
  virtual double getFluxArrowsize(void)
 
  {
 
    return flux_arrow_size;
 
  }
 

	
 
  void FitCanvasToWindow();
 
  void FitLeafToCanvas(void);
 

	
 

	
 
  public slots:
 

	
 
  void about();
 
  void gpl();
 
  void TimeStepWrap();
 
  void togglePaused();
 
  void setFluxArrowSize(int size);
 
  void RestartSim(void);
 
  void toggleShowCellCenters(void);
 
  void toggleShowNodes(void);
 
  void toggleShowBorderCells(void);
 
  void toggleShowFluxes(void);
src/mainbase.h
Show inline comments
 
@@ -99,28 +99,31 @@ class MainBase  {
 
  void Save(const char *fname, const char *format, int sizex=640, int sizey=480);
 
  void CutSAM(void);
 

	
 
  void Plot(int resize_stride=10);
 

	
 
  virtual void UserMessage(QString message, int timeout = 0) {
 
    cerr << message.toAscii().constData() << endl;
 
  }
 

	
 
  Mesh &mesh;
 
  QTransform viewport;
 

	
 

	
 
 protected:
 
  QGraphicsScene &canvas;
 
  virtual xmlNode *XMLSettingsTree(void) const;
 
  virtual xmlNode *XMLViewportTree(QTransform &transform) const;
 

	
 

	
 
  
 
 protected:
 
  bool showcentersp;
 
  bool showmeshp;
 
  bool showbordercellp;
 
  bool shownodenumbersp;
 
  bool showcellnumbersp;
 
  bool showcellsaxesp;
 
  bool showcellstrainp;
 
  bool movieframesp;
 
  bool showboundaryonlyp;
 
  bool showwallsp;
src/mesh.h
Show inline comments
 
@@ -74,24 +74,25 @@ class Mesh {
 
    // Make sure the reserved value is large enough if a cell is added
 
    // in "Divide" when the capacity is insufficient, "cells" might be
 
    // relocated including the current Cell (i.e. the value of *this)
 
    // calling "Mesh::IncreaseCapacityIfNecessary" (from another
 
    // object than Cell, e.g. Mesh) before entering Divide will solve
 
    // this issue (solved now).
 
    cells.reserve(2);
 
    nodes.reserve(500);
 

	
 
    time = 0.;
 
    plugin = 0;
 
    boundary_polygon=0;
 
    iterations = 0;
 
  };
 
  ~Mesh(void) {
 
    if (boundary_polygon) {
 
      delete boundary_polygon;
 
      boundary_polygon=0;
 
    }
 
  };
 

	
 
  void Clean(void);
 
  Cell &EllipticCell(double xc, double yc, double ra, double rb, int nnodes=10, double rotation=0);
 
  Cell &CircularCell(double xc, double yc, double r, int nnodes=10) {
 
    return EllipticCell(xc, yc, r, r, nnodes, 0);
 
@@ -382,24 +383,28 @@ class Mesh {
 
  QVector< QPair<qreal,int> > VertexAnglesValues(void);
 
  void SetSimPlugin(SimPluginInterface *new_plugin) {
 
    plugin=new_plugin;
 
  }
 
  QString ModelID(void) { return plugin?plugin->ModelID():QString("undefined"); }
 
  void StandardInit(void);	
 
  double Compactness(double *res_compactness=0, double *res_area=0, double *res_cell_area=0, double *hull_circumference=0);
 
  void CSVExportCellData(QTextStream &csv_stream) const;
 
  void CSVExportMeshData(QTextStream &csv_stream);
 
  
 
  Node* findNextBoundaryNode(Node*);
 

	
 
  int iterations;
 
  int getIterations(){return this->iterations;}
 
  void incrementIterations(){this->iterations++;}
 

	
 
 private:
 

	
 
  // Data members
 
  vector<Cell *> cells;
 
  vector<Node *> nodes;
 
  list<Wall *> walls; // we need to erase elements from this container frequently, hence a list.
 
 public:
 
  vector<NodeSet *> node_sets;
 
 private:
 
  vector<Node *> shuffled_nodes;
 
  vector<Cell *> shuffled_cells;
 
  unique_queue<Edge> node_insertion_queue;
0 comments (0 inline, 0 general)