Sascha - Projekt

Adaptive Fiber Networks


[1] C.M. Material zum Projekt-Start

  • Simulation: (Erstellt in Entwicklungsumgebung: Visual C++, Autorenedition, Version 6.0)

- Libraries: CMLib
- Programm: JPSim


[2] C.M. Erzeugung eines 2D Zufallsnetzwerks mit gegebenen statistischen Parametern

Wir sollten nicht zu viel Energie auf die Wahl der anfänglichen Netzwerk-Struktur verwenden. Sie braucht für den Zweck, die "Spider-Näherung" zu rechtfertigen, auch nicht realistisch zu sein (die statistischen Eigenschaften der Netzwerke in der Zelle sind ohnehin nicht bekannt, außerdem wird sich später im Projekt - im Laufe der Simulation - eine emergente Struktur erst ergeben). In solchen Situatuionen ist es meist am besten, wenn man sich unvoreingenommene Modelle sucht, die im Paper besonders einfach zu erklären sind.

Bei einem Netzwerk kann man unterscheiden zwischen der Topologie (dem Graphen des Netzwerks, welcher nur beschreibt, wie viele Knoten es gibt und welche davon über Fasern verbunden sind) und der räumlichen Struktur (die angibt, an welchen x-y-Positionen die einzelnen Knoten liegen und damit auch, wie lang die Fasern sind).

Die einfachste Netzwerk-Topologie ist das Erdös-Renji-Zufallsnetzwerk. Bei diesem wird die Gesamtzahl NN der Knoten vorgegeben. Dann werden NF Fasern (minimal 0, maximal (NN*(NN-1)/2) zwischen rein zufällig ausgewählten Knoten eingeführt. Das Verhältnis p=NF/(NN*(NN-1)/2) bezeichnet man als Verbindungswahrscheinlichkeit. Die beiden Zahlen NN und p charakterisieren das Zufallsnetzwerk normalerweise bereits vollständig. In unserem Fall kommt noch der Bruchteil q der Knoten hinzu, die als beweglich angenommen werden (q=NM/NN, wenn NM die Anzahl der movable nodes bhttp://lpmt-theory.wikidot.com/local—files/sascha-projekt/biophysics I.zipezeichnet). Ich würde die Attribute fixiert/beweglich einfach im Nachhinein zufällig (im richtigen Mischungsverhältnis) auf die gegebenen Knoten verteilen.

Was die räumliche Struktur angeht, ist die einfachste Wahl eine statistisch homogene Verteilung der Knoten über dem rechteckigen Simulationsfeld der Abmessung Lx * Ly.

Wenn wir bereit sind, die Vorgabe der Längenverteilung der Fasern aufzugeben (was wirklich kein Problem darstellt, da die realistische Verteilung unbekannt), wäre demnach das einfachste Modell ein

Zufallsnetzwerk mit homogen verteilten Knoten, die sich zufällig in fixierte Ankerknoten und bewegliche Kreuzungspunkte aufteilen. Die 4 relevanten Parameter sind dann in einem quadratischen (Lx=Ly=L) System L, NN, p, q.

Daraus ergeben sich bei Bedarf dann abgeleitete Parameter wie die Knotendichte Dichte rho=NN/(L*L), oder den mittleren Knotengrad k_av=p*NN (das ist die mittlere Faser-Anzahl, die an einen zufällig gewählten Knoten andocken). Weiterhin ergibt sich daraus eine noch zu bestimmende Längenverteilung P(L) der Fasern, deren Mittelwert natürlich mit der Systemlänge L ansteigen wird.


[3] C.M. Test 1 des Spider-Modells

Ein Netzwerk mit den Parametern L, NN, p, q sei generiert.

Am Anfang (t=0) seien die Ruhelängen LR_i der Fasern mit ihren tatsächlichen Längen identisch, d.h. das Netzwerk ist entspannt. Der strain [s_i = (Länge-Ruhelänge)/Ruhelänge] ist dann gleich Null für alle Fasern i.

Nun sollen alle Fasern ihre Ruhelängen nach einer bestimmten Regel (siehe unten) verändern (verkürzen und wieder verlängern), wodurch sich strain und damit Kräfte $f_i = k\;s_i$ im System aufbauen. Als Folge davon bewegen sich alle nicht-fixierten Knoten gemäß der überdämpften Dynamik. Deren 2D-Trajektorie wird aufgezeichnet, um sie später statistisch auszuwerten und mit den Resultaten des Spider-Modells zu vergleichen.

Die Ruhelängen LR_i sollen sich im ersten Test ganz unabhängig voneinander verändern. Dabei soll LR_i(t) eine ununterbrochene Folge von dreiecks-förmigen Pulsen durchlaufen (wird noch genauer spezifiziert). Die Dauer T_ik der aufeinanderfolgenden Pulse ist eine stark variierende Zufallsgröße und ist powerlaw-verteilt, allerdings mit einem unteren (T_min) und einem oberen (T_max) Abschneidewert.

Die Ruhelänge LR_i(t) muß natürlich immer zwischen Null und der tatsächlichen (momentanen) Federlänge LT_i(t) liegen. Sollte LR_i(t) jemals diese Grenzen unter- bzw. über-schreiten, wird der Wert künstlich auf 0 bzw LT_i(t) gesetzt.

Jeder dreiecks-förmigen Puls besteht aus einem kontraktiven und einem expansiven Teil. Im kontraktiven Teil verkleinert sich die Ruhelänge LR_i(t) mit konstanter Rate R_ctr. Im expansiven Teil vergrößert sich LR_i(t) wieder mit konstanter Rate R_exp.


[4] S.M. Gegenvorschlag zu [3]

Ich habe ein bisschen in den von Bibliotheken herumgewuselt und einige Vorabueberlegungen angestellt. Ich wuerde das Netz auf folgende Art und Weise erzeugen:

Man gebe sich die erste Fiber vor. Dann wuerfelt man nach jedem Iterationsschritt neu aus, wo die eventuelle neue Fiber zum liegen kommt (gleichverteilt, wie bei deiner Methode) und wie lang sie is (Gaussian oder Power-Law, je nach Wunsch). Jedes Ende hat einen kleinen Andockradius von ein paar Pixeln und wenn eines der beiden Enden an einer sinnvollen Position anwachsen kann (d.h. in der Naehe von einer anderen Faser oder dem Ursprungspunkt) dann waechst es an, ansonsten treibt sie einfach nur herum und wird dann natuerlich sofort als Fiber erkannt die keine Kraft traegt -> geloescht. Das hat drei Vorteile:

  • Es klingt einfach realistischer, so aehnlich wird es in der Natur auch passieren.
  • Es sorgt dafuer, dass lange Fasern oefter bewachsen werden wie kurze.
  • Es ist einfach zu implementieren.

C.M.: Grundsätzlich habe ich natürlich nichts gegen ein realistischeres Modell. Nur zwei Bedenken:
- Wir haben für den Spider-Test nur sehr wenig Zeit. (Danach kein Problem).
- Wenn irgendwo entlang einer Faser X eine neue Faser Y andockt, sich also ein neuer Kreuzungspunkt bildet, dann wird dadurch die Faser X in zwei Teile zerlegt. Es entstehen also quasi neue Fasern mit neuen Längen, die nicht der vorgeschriebenen Verteilungsfunktion gehorchen. Somit dürfte man also Fasern immer nur an noch unbenutzte Knoten oder an die Enden anderer Fasern andocken lassen. Kollidiert dann nicht die Idee "Lange Fasern haben mehr Seitenarme" mit der vorgegebenen Längenverteilung ? Falls es da Probleme gibt, können wir aber gerne auf die vorgegebene Verteilung verzichten.


[5] Fasern mit geregelter Optimalkraft (für später)

Einige Überlegungen hierzu im folgenden Post.

Es stellt sich hier die interessante Frage, wie sich in einem komplexen Netzwerk von Fasern die Regelungsvorgänge gegenseitig beeinflussen. Kann das Auftauchen einer neuen Faser (oder das Verschwinden einer alten) "Lawinen" von Anpassungsreaktionen hervorrufen, ähnlich wie in der Self Organized Criticality (SOC) ? Könnten diese Lawinen langzeit-korrelierte Kraftfluktuationen auf die Knoten hervorrufen ?


[6] Analytische Lösung überdämpfter, voll-verbundener Federnetzwerke

Ein mit unserem verwandtes, aber einfacheres System ist analytisch zugänglich:

  • N bewegliche Knoten
  • Jeder Knoten ist mit jedem anderen durch lineare Federn verbunden
  • Die Federn haben alle die Ruhelänge Null und Federkonstante k
  • Die Bewegung der Knoten ist überdämpft mit Reibungskonstante $\gamma$

Die geschlossene Integration der gekoppelten Bewegungsgleichungen gelingt durch Transformation auf Schwerpunkts- und Relativ-Koordinaten, siehe Aufgabe/Lösung 1 im folgenden Skript.


[7] Erzeugung zufälliger Fasernetzwerke

Manchmal ist es ganz nützlich, sich anzusehen, wie andere Leute Probleme lösen. Im folgenden Paper ist die Methode zur Erzeugung zufälliger Fasernetzwerke gelb markiert.


[8] S.M. Zwischenstand I

Im Gegensatz zu dem hier verlinkten Paper werden wir ( zunaechst mal ) folgendes anders machen: wenn eine fiber eine andere schneidet, wird sie dort nicht festwachsen. Es wird nur darauf geachtet wo die Endpunkte der neuen fiber hinfallen (Ehrlich gesagt gibt es auch nicht mehr oder weniger Gruende das so zu machen wie in dem Paper, vielleicht gibts eine biochemische welches Modell besser is? Adhaesions-Molekuele an den Enden?
Anyways, wir werden jetzt erstmal wie besprochen weitermachen.
Zu der analytischen Loesung: Das ist absolut exakt das was ich schon ausgerechnet habe.


[9] S.M. Zwischenstand II

Ich bin bald soweit und hoffe dir morgen oder uebermorgen bereits Code praesentiern zu koennen der einen stochastisch wachsendes System von gekoppelten harmonischen Oszillatoren bereitstellt. Ich fahre morgen heim nach Erlangen, wenn du moechtest koennen wir uns am Nachmittag mal treffen ( sofern meine angepeilte Zeiteinteilung hinhaut und ein Treffen Sinn macht ). Schreib mir einfach eine Email, ob und wenn ja wann dir das taugt.


[10] S.M. Betacode zum drueberschaun

Dies ist die erste Version. Es verwendet Gnuplot um das Netzwerk zu zeichnen ( funktioniert eventuell noch nicht gescheit ). Das Netzwerk besteht am Anfang immer aus einer grossen Fiber die quer ueber den Bildschirm liegt. Es waechst indem zufaellig generierte Fibres quasi von oben drauffallen. Sie koennen an den Spitzen jeweils an einer anderen Node festwachsen ( noch nicht in der Mitte einer anderen Fiber, das kommt noch ). Wenn eine beide Spitzen irgendwo andocken koennen, wachsen sie dort fest und bilden eine Querstrebe. Wenn nur eine andocken kann, wird das Ende am Boden festwachsen. Wenn beide Enden ins Leere fallen waere das quasi eine Fibre die Boden mit Boden verknuepft, sie wird nie eine Kraft tragen und instant geloescht.


[11] S.M. Fixes

Ich habe einige Fixes vornehmen muessen und diverse Fehler beseitigt die eine anstaendige Generation des Netzes verhindert haben. Damit du dir einen Ueberblick verschaffen kannst reicht aber der Code der grad auf der Seite ist, ich geb dir den aktuellen Code gegen Abend, dann auch mit der moeglichkeit sich die dynamische Matrix des Systems zu beschaffen.


[12] C.M. Kommunikation

Die schnelle Kommunikation kann auch über Etherpad laufen. Alle wesentlichen Punkte sollten aber weiterhin in diesen Blog gepostet werden.


[13] S.M. Launch

So, ich bin wieder in Regensburg und am Projekt dran. Du kannst quasi stuendliche Updates erwarten.


[14] S.M. Progress

okay, plotting sollte soweit funktioniern, der random number generator scheint stabil zu laufen, wurde sogar mit ner echten zufallszahl geseeded ;)
es sind zwei verfahren in der mache um die bewegungsgleichungen zu loesen, einmal ein klassisches relaxationsverfahren, welches langsam arbeitet, aber einfach zu implementieren ist ( ist quasi lehrbuchstoff bzw. in numerical recipes zu finden ). dieses verfahren ist auch schon fertig implementiert und sollte funktioniern ( beta test wird der spider sein ).
das zweite verfahren is ein modernes krylov unterraum verfahren und es ist FAST fertig. ich werde es aber nicht zuende bringen bevor wir nicht wirklich so grosse systeme rechnen, dass es sich lohnt und mich derweil mal drum kuemmern, dass wir paar rechnungen praesentiern koennen.
Prinzipiell steht der Rechnung nur noch eine sache im wege, soweit ich das jetzt ueberblicken kann: alle federn werden mit der auslenkung 0 auf das grid geworfen. da liegen sie dann rum und tun einfach nichts, weil sie niemand auslenkt ( auch keine neuen fibres, die werden ja wieder mit strain 0 geboren ).
ich fixe noch n paar kleinere dinge, du kannst dir derweil ja ma ueberlegen, wie das bei dem spiderling passiern soll … sollen alle federn gedehnt geboren werden? etc …


[15] S.M. Test des Spiders

Folgende Sachen muesst ich noch wissen:

a) soll der spider mit fortschreitender iterationszahl wachsen, d.h. neue fibres zulegen?
b) wie stark sollen die fibres am anfang gedehnt sein?
c) ich verwende eine gleichverteilung fuer alle relevanten zufallsprozesse, right?
d) sollen die fibres ihre federkonstante dynamisch aendern koennen?

was sonst noch auf der ToDo list steht:

feder -> gummiband
wachstum auf den fibres ( das ist fast fertig, ich sitze da momentan drueber )

brauchen wir aber ja beides nicht fuer den spidertest …


[16] S.M. Wachstum auf Fibres

So, das Wachstum auf den Fibres is quasi fertig… in die Bestimmung des bestmoeglichen Andockpunktes auf der Fibre ( mit anderen Worten, dem mit geringsten Abstand ) sind allerdings einige geometrische Ueberlegungen und analytische Geometrie eingegangen die ich wohl seit der zwoelften Klasse nicht mehr gemacht habe. Ich bins dreimal durchgegangen und glaube manchen Vorzeichen immer noch nicht ( insb. die Richtungen der Vektoren halt ).
Da das schon eine sehr essentielle Stelle im Code sein wird, waers cool wenn du dir den entsprechenden Abschnitt mal anschaun koenntest. Sag einfach bescheid ob ich den entsprechenden Ausschnitt hier posten soll / mail / oder wie auch immer du das wuenschst.

CM: Am besten das gesamte Programm in die Dropbox ( siehe Email ) und den relevanten Teil hier zusätzlich posten.


[17] S.M. Kommentar zum Code

okay, was der code machen soll ist folgendes: gegeben sei eine gerade bzw. eine endliche lange strecke. die anfangs und endpunkte der strecken werden mit m / n durchindiziert. die tmpFib0 bzw tmpFib1 sind die anfangs und endpunkte der aktuell besten fibre, tmpCoords0 / 1 die koordinaten des punktes wo angewachsen werden soll.

die geometrische aufgabe besteht darin rauszufinden, welcher punkt auf der strecke den geringsten abstand zu C hat, fuer einen gegebenen punkt C. dabei wird fuer C die beiden enden der neuen fibre eingesetzt welche unter positions[] gespeichert sind.

ich habs mehrfach durchgesehen, es sollte eigentlich hinhaun, aber ich bin mir oft unsicher, in welche richtung meine vektoren zeigen. es ist leicht verstaendlich wenn man sich ein bildchen malt, aber ich bin trotzdem nicht sicher …

hinweis: zeilen die so aussehen sind einfach nur mein skalarprodukt ( weisst wie das eleganter geht? )
c0 *= real(c0)*real(tmp) + imag(c0)*imag(tmp);

codeauszug:

        // growth onto fibres
        // calculate distances to fibres themselves

        double distanceToFibre0 = CONNECTION_CUTOFF;
        double distanceToFibre1 = CONNECTION_CUTOFF;
        vec2D tmpFib0; // current candidate for growth
        vec2D tmpFib1; // same for other point
        vec2D tmpCoords0; // coordinates of current growthpoint
        vec2D tmpCoords1; // same for other point

        // loop over all fibres, calculate the nearest point
        for(unsigned int m = 0; m < net->nextAvailableNode; m++)
            for(unsigned int n = 0; n < m; n++)
                {
                    vec2D tmp;

                    //first point
                    vec2D c0;
                    tmp = positions[0] - net->nodePos[m];
                    c0 = uDistVec(net->nodePos[m], net->nodePos[n]);
                    c0 *= real(c0)*real(tmp) + imag(c0)*imag(tmp);
                    c0 = tmp - c0;
                    if(distanceToFibre0 > abs(c0))
                    {
                        tmpCoords0 = positions[0] + c0;
                        distanceToFibre0 = abs(c0);
                        tmpFib0 = (double)m + I * (double)n;
                    }

                    //second point
                    vec2D c1;
                    tmp = positions[1] - net->nodePos[m];
                    c1 = uDistVec(net->nodePos[m], net->nodePos[n]);
                    c1 *= real(c1)*real(tmp) + imag(c1)*imag(tmp);
                    c1 = tmp - c1;
                    if(distanceToFibre1 > abs(c1))
                    {
                        tmpCoords0 = positions[1] + c1;
                        distanceToFibre1 = abs(c1);
                        tmpFib1 = (double)m + I * (double)n;
                    }
                }

        // by now, the nearest fibre to the respecting endpoints have been found
        // the distances have been saved under distance_fibres 
    // the endpoints of the fibres have been saved under tmpFib
    // which has the layout of a complex number
        // (kinda easy to get confused)

[18] CM: Kräftegleichgewicht in Feder-Netzwerken

Wir haben ein Netzwerk aus $n\!=\!1\ldots N$ Knoten (mobil oder fixiert) bei den 2D-Positionen $\vec{R}_n$. Ein Teil der Knotenpaare $(m,n)$ ist durch Federn mit Federkonstante $k_{mn}$ und Ruhelänge $L_{mn}^0$ verbunden. Die tatsächlichen Momentanlängen sind

(1)
\begin{align} L_{mn}=\sqrt{\sum_{i=x,y} (R_{mi}-R_{ni})^2}, \,\,\,\,\,\,\,\,(*) \end{align}

wobei $R_{ni}$ die i-Komponente der Knotenposition $\vec{R}_n$ bezeichnet.

Es ist bequem, fehlende Federn durch verschwindende Federkonstanten $k_{mn}=0$ zu beschreiben.

Dann lautet die gesamte potentielle Energie des Systems:

(2)
\begin{align} U = U\left\{ R_{kj} \right\} = \frac{1}{2} \sum_{m,n} \frac{k_{mn}}{2} (L_{mn}- L_{mn}^0)^2 \end{align}

Das mechanische Gleichgewicht korrespondiert mit dem Minimum der potentiellen Energie. Zum numerischen Finden desselben könnte man z.B. die Powel-Methode verwenden, welche den Potentialhang in einer Folge von Geradenstücken hinunterläuft. Diese Methode benötigt nur das Potential selbst. Effizientere multidimensionale Minimierungs-Algorithmen, wie etwa Conjugate Gradients, benötigt darüber hinaus den lokalen Gradienten des Potentials, also die Kräfte.

Später, für die Untersuchung von Netzwerken aus selbst-anpassungsfähigen Federn, benötigen wir zwar ohnehin die einzelnen Feder-Kräfte $f_{mn}\!=\! k_{mn}|L_{mn}- L_{mn}^0|$, aber diese sind im Zuge des obigen Potentials leicht mit zu berechnen und sind zu unterscheiden von den Kräften $F_k$ auf jeden Knoten: Die Kraft-Komponente in j-Richtung auf den k-ten Knoten ist ja

(3)
\begin{align} F_{kj} = - \frac{\partial U}{\partial R_{kj}}. \end{align}

Das Netzwerk ist im mechanischen Gleichgewicht, wenn für alle mobilen Knoten m und alle Raumrichtungen j gilt:

(4)
\begin{equation} F_{mj} = 0. \end{equation}

Für obiges Potential ergeben sich - nach einiger Rechnung - folgende Kraftkomponenten:

(5)
\begin{align} F_{mj} = -2 \sum_n \;\left[ \frac{L_{mn}\!-\! L_{mn}^0}{L_{mn}}\right]\; K_{mn} \;(R_{mj}-R_{nj}). \end{align}

Die eckige Klammer beschreibt eine Art dimensionslose, relative Dehnung der mn-Feder, welche (im positiven Bereich) zwischen 0 und 1 liegen kann. Man beachte, daß gemäß Formel (*) die $L_{mn}$ selbst auch wiederum von den Knotenkoordinaten $R_{mi}$ und $R_{ni}$ abhängen. Außer für die Spezialfälle $L_{mn}^0\!=\!0$, oder auch $L_{mn}\gg L_{mn}^0$, liefert die Gleichgewichtsbedingung $F_{mj} = 0$ also ein nicht-lineares Gleichungssystem. Diese Nichtlinearitäten sind letztlich geometrischer Natur (sie kommen von den sin/cos-Termen der Trigonometrie) und führen oft zu interessanten mechanischen Eigenschaften solcher Federnetzwerke.

Die numerische Berechnung des Gleichgewichts könnte theoretisch auch als multi-dimensionales Nullstellenproblem z.B. mit dem Newton-Raphson-Verfahren durchgeführt werden. Hierfür würde aber zusätzlich die Jacobi-Matrix benötigt, also die zweite Ableitung des Potentials nach den Knotenkoordinaten. Außerdem würden die besonderen Eigenschaften von Potentialgradienten dabei nicht gewinnbringend ausgenutzt werden. Diese Möglichkeit scheidet also meiner Meinung nach aus.

Aus Gründen der Einfachheit tendiere ich zur Powel-Methode.


[19] S.M. Update

Hi Claus, bin wieder in regensburg und am arbeiten. Die powell-methode is genehmigt, ich denke ich hab das auch zum laufen bekommen. ich leg dir den neuen code in die Dropbox ( der tut grad nichts sinnvolles, aber nur damit du n update hast und dich freuen kannst ;)

ich bin grad dabei das miniprogramm was du geschrieben hast auszuschlachten um diesen ring mit federn zu rechnen. dauert denk ich nimmer lang, ich poste bald weiter.


[20] S.M. Zwischenfrage

Arbeiten die Matrizen von numRec zufaellig von 1 bis n statt von 0 bis n ?
CM: So ist es.

[21] S.M. Juhu! =)

Der spider wird gross und rot auf meinem bildschirm angezeigt, das powellverfahren relaxiert ohne segfaults (da musst ich einige beheben =/ ) und am ende kommt wieder was raus, was wie ein spider aussieht. all das wird in ein file reingedruckt und man kann sichs immer wieder anschaun. is das nich toll? =)

ich werd heut nachmittag mal nachrechnen, ob wirklich das rauskommt, was wir erwarten, bin erst noch 2-3h in der uni, aber ich denk da is maximal noch n bissi bugfixing notwendig, das sollte schon alles passen.

[22] S.M. Update

Es laeuft. Hab nen grossen Spider erzeugt, 10 Fibres, davon eine in eine definierte Richtung, alle gleich lang. Ich ziehe an der einen und das System relaxiert.


[23] C.M. Potentiallandschaft eines Spider-Netzwerks

Wir untersuchen ein Netzwerk aus $N$ Federn $(n=1\ldots N)$ in Spider-Geometrie:

spider1

Jede einzelne Feder hat die Kraft-Längen-Relation:

(6)
\begin{align} F = k\;(L-L_0), \end{align}

wobei $L_0$ die Ruhelänge bezeichnet.

Wir betrachten nun den Beitrag einer bestimmten Feder zur Kraft auf den zentralen beweglichen Bead, wenn dieser (obdA) horizontal um eine kleine Strecke $\Delta x \ll L_0$ ausgelenkt wird:

geometry1

Wegen der Kleinheit der Auslenkung gilt $\alpha_0 \approx \alpha_1$. Die Feder verkürzt sich um eine Strecke $\Delta L = \Delta x \; \cos(\alpha_0)$. Dadurch entsteht in Federrichtung eine zusätzliche Kraft $\Delta F = k \Delta L$. Die x-Komponente dieser Zusatzkraft ist $\Delta F_x = \Delta F \; \cos(\alpha_0) = k \Delta x \; \cos^2(\alpha_0)$.

In einem statistischen Sinne kommen alle Federrichtungen $\alpha$ gleich wahrscheinlich vor. Deshalb ist der mittlere Beitrag einer Feder gegeben durch $\left\langle\Delta F_x\right\rangle_{\alpha} = k \Delta x \int_{-\pi}^{+\pi} \cos^2(\alpha) d\alpha = \frac{1}{2} k \Delta x$. Bei einem statistisch isotropen Spider aus $N$ Federn erwarten wir somit bei Auslenkung des zentralen Beads um eine Strecke $\Delta r$ im Mittel eine radialsymmetrische Rückstellkraft von

(7)
\begin{align} F_N = \frac{Nk}{2} \Delta r . \end{align}

Die potentielle Energie-Landschaft wäre ein parabolisches Minimum um den Ruhe-Punkt des mechanischen Gleichgewichts:

(8)
\begin{align} U_N = \frac{Nk}{4} \left( \vec{R}-\vec{R}_{equ} \right)^2. \end{align}

Es sollte dabei keine Rolle spielen, ob die Federn im mechanischen Gleichgewicht entspannt sind (so daß der Bead überhaupt keine Kraft spürt), oder ob sie vorgespannt sind (in welchem Fall sich die von Null verschiedenen Einzelkräfte der Federn im Gleichgewichtspunkt lediglich gegenseitig aufheben). Im entspannten Spider hat die potentielle Energie im Gleichgewichtspunkt den Wert 0, während sie im vorgespannten Fall auch noch im Gleichgewichtspunkt einen endlichen Minimal-Wert behält.

Die Potentiallandschaft eines konkreten Spider-Netzwerkes wird natürlich vom obigen Ensemble-Mittelwert abweichen. Die Radialsymmetrie wird gebrochen sein. Bei großen Auslenkungen aus dem Gleichgewichtspunkt wird auch die parabolische Form nicht mehr zutreffen, ganz extrem wenn man über den Radius des Spiders hinausgeht.


[24] S.M. Zwischenbericht
ich schreibe gerade an dem Code der ein asymmetrisches Netz das durch einen innern Ring und einen aeussern Ring getrennt wird. Es ist schon fast fertig, es fehlt nur noch ein sinnvoller algorithmus um zu ueberpruefen ob irgend ein bruchstueck im innern herumfliegt, was gar keine connections hat.

Was ich nich so ganz verstanden hab ist das mit der potentiallandschaft und dem ueberpruefen wo powell hinrelaxiert. Ich hab ja atm nur potentiale fuer den unveraenderten spider. Das potential minimum is ungefaer bei (0, 0) und genau da is auch das equilibrium am anfang.
waehrend der relaxation aendern wir die ruhelaengen und damit auch das potential. diese potentiale haben wir nie fuer einen zwischenstand aufgezeichnet. soll ich das noch machen?

CM:
Man sieht doch z.B. im asymmetrischen Fall, daß das neue Potentialminimum nicht mehr bei (0,0) liegt. Ich wollte nur wissen, ob der Powell da auch hinrelaxiert.


[25] S.M. Modell B fertig umgesetzt

Ich bin fertig, ich kann ein Netz wie besprochen generieren. Sieht wirklich interessant aus.

CM: Großartig !

Wichtige Frage: soll die Ruhelaenge der ganzen Fasern am Anfang auf einen fixen Wert gesetzt werden oder soll sie gleich der Laenge sein mit der sie geboren wurden?

CM: Später wird es für die Anfangsbedingungen einen ausgeklügelten Mechanismus geben (der momentan schon in meinem Spider implementiert ist), aber zum Test ist es vielleicht nicht schlecht, wenn Du die Ruhelänge 10 Prozent geringer als die tatsächliche setzt - also gleich den "schwierigen" Fall.

Zu deiner anderen Frage im Etherpad: nein, ich habe noch kein Potential fuer zufaellig verteilte Knoten. Werd ich nachholen. Auch da stellt sich allerdings die Frage ob die Ruhelaenge fix sein soll oder gleich der Laenge mit der die Fasern geboren wurden.

CM: Dito


[26] S.M. Update

Ich komm gut voran, wir koennten uns ma wieder treffen.

CM: Ich habe diese ganze Woche das Projekt mit Sebastian Probst, also nicht wirklich viel Zeit. Bist Du eventuell am Freitag-Abend im Teehaus zun CC ?

Das adhPos.dat liegt uebrigens in der Dropbox.

CM: Super ! Habe es schon in die potC.pdf eingebaut.


[27] S.M. Update

Es gibt jetzt einen Ordner "komplett zufaelliges Netz" wie du gewuenschst hast. Es liegen die positionen und das potential drin.

Das Programm fuer Modell B ist einsatzbereit, du musst nur noch spezifizieren wie du dir das mit dem verkuerzen der fibres vorstellst. welche aus der mitte oder eine der aeusseren?

Ich habe getestet ob powell in das grafisch erkennbare minimum relaxiert wie besprochen und der equilibriumspunkt passt vorzueglich. gleichgewicht ist bei (-1.72325, -0.334378) erreicht, falls du nochmal einen plot mit genaueren aequipotentiallinien machen willst um es genauer zu untersuchen. auf deinem plot ergibt sich auf jeden fall kein widerspruch.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License