Wie kann ich eine variable Teilchenzahl in eine Simulation der Brownschen Dynamik einbeziehen?

Ich habe eine Simulation der Brownschen Dynamik in zwei Dimensionen programmiert. (Grobkörnige Proteine ​​auf Oberflächen mit Wechselwirkungspotentialen, dh fleckige Partikel.) Nun möchte ich Partikel das System verlassen oder betreten lassen, dh Partikelzahl muss nicht erhalten bleiben.

Kennt jemand einen guten Weg, das zu tun? Was sind einige häufige Fallstricke?


Grundlage meiner Simulation ist die überdämpfte Langevin-Gleichung

D X D T = D k B T ( F ich N T + F S ) .
In meinem Fall habe ich anisotrope Diffusion, also habe ich im Grunde eine Langevin-Gleichung für jeden Freiheitsgrad jedes Partikels; 2 gerichtet und 1 rotierend. Die zufällige Bewegung von Partikeln ist in der stochastischen Kraft enthalten, die von einem Standard-Wiener-Prozess erzeugt wird. Punktflecken, die an den Partikeln angebracht sind, vermitteln anziehende Wechselwirkungen, während die Abstoßung durch ein Standard-Soft-Sphere-Potential beschrieben wird. Das System wird auf konstanter Temperatur gehalten (in den Momenten der zufälligen Bewegung enthalten). Mich interessieren die selbstorganisierten Strukturen am Simulationsende, dh Cluster unterschiedlicher Größe.

Bisher hat meine Simulation wichtige Tests bestanden und stimmt mit analytischen Vorhersagen aus statistischen Berechnungen überein (kanonisches Ensemble). In realen Experimenten ist es nicht so einfach, die Partikelzahl festzulegen, da Partikel während des gesamten Experiments weg und auf die Oberfläche diffundieren. Ich möchte diese Beobachtung in meine Computersimulation einbauen, was bedeutet, dass ich Partikel entfernen und meinem System Partikel hinzufügen muss.

Ich hatte die Idee, Raten zu definieren, mit denen zufällig ausgewählte Partikel entfernt und dem System hinzugefügt werden. Nun befürchte ich, dass dieser Ansatz zu naiv ist und wollte wissen, ob jemand einen Lösungsvorschlag oder zumindest ein paar Hinweise hat. Vielleicht fehlt mir etwas.

Ich hätte lieber eine theoretische Untermauerung meiner Idee, wie sie zum Beispiel großkanonische Monte-Carlo-Simulationen haben.

Stellen Sie eine Programmierfrage? Oder eine Physikfrage?
Eigentlich eine Kombination aus beidem. Ich weiß, dass es Algorithmen für Grand Canonical Ensembles für Monte-Carlo-Ansätze gibt. Ich suche etwas ähnliches für BD-Simulationen.
Ich denke nur laut. Wenn Sie bisher mit einer quadratischen oder rechteckigen Fläche gearbeitet haben, könnten Sie es vielleicht mit einem Torus versuchen: Ein Molekül, das durch die rechte Kante geht, würde an der linken Kante wieder auftauchen. Gleiches gilt für den oberen und unteren Rand. Sie könnten dann ein kleineres Rechteck aus der Torusoberfläche herausschneiden und Sie würden eine variable Anzahl von Partikeln erhalten.
Ich möchte Ihnen für die Bezeichnung „großkanonischer Monet-Carlo“ danken. Bei der Suche danach bin ich auf einige interessante Dinge gestoßen, über die ich lernen sollte. Mit deiner Frage hast du mich etwas gelehrt.
@EricDuminil Ich verwende periodische Randbedingungen, die auf eine rechteckige Oberfläche angewendet werden. Ist dies nicht gleichbedeutend mit einem Torus?

Antworten (2)

Die Einführung von Teilchenerzeugung und -vernichtung in die Brownsche Dynamik wird ähnliche Probleme mit sich bringen wie die Einführung in die Molekulardynamik. Sie können die Standardbewegungen von Grand Canonical Monte Carlo (GCMC) in Ihr dynamisches Schema einfügen. Die praktische Gefahr besteht darin, dass die Konsequenzen für die Dynamik, nachdem man eine Bewegung akzeptiert hat, manchmal dramatisch sein werden: sehr große Kräfte zwischen den Teilchen und daher sehr große Verschiebungen. Um dies zu vermeiden, wurden Schemata ausgeheckt, um Partikel allmählich einzufügen oder sogar einen kontinuierlichen Parameter in die Lagrange-Funktion einzuführen, der das Erscheinen des zusätzlichen Partikels steuert. In Agarwal et al., New J Phys , 17 , 083042 (2015), das Open Access ist, überprüfen sie einige dieser Methoden. Wie sie jedoch betonen, sind solche Ansätze nicht weit verbreitet und etwas fummelig. Dasselbe gilt meines Erachtens für den von Agarwal vorgeschlagenen Ansatz. Ich würde nicht empfehlen, diesen Weg einzuschlagen, aber zumindest können Sie diese Alternativen mit einer geeigneten Anpassung von der Molekulardynamik an die Brownsche Dynamik in Betracht ziehen.

Hier ist eine andere Möglichkeit. Verwenden Sie Monte Carlo anstelle der Brownschen Dynamik. Die Zeitskala ist etwas fiktiv, aber die Partikel werden immer noch realistisch herumdiffundieren, und Sie geben wohl ohnehin eine vollständig realistische Dynamik auf, indem Sie GCMC-Bewegungen hinzufügen, die das Erscheinen und Verschwinden von Partikeln ermöglichen.

Es gibt eine Zwischenlösung. Brownsche Dynamik ohne Trägheit verwendet einen Algorithmus

R ( T + δ T ) = R + D k T F δ T + 2 D δ T G
Wo D ist der Diffusionskoeffizient, T die Temperatur, F die auf das/die Teilchen wirkende Kraft und G ein Satz unabhängiger normalisierter Gaußscher Zufallszahlen. Es kann gezeigt werden, dass dies (fast) äquivalent zu "Smart Monte Carlo" (SMC) ist, was auf eine alte Veröffentlichung von Rossky et al., J Chem Phys , 69 , 4628 (1978) zurückgeht . Der wesentliche Unterschied besteht darin, dass SMC auf den obigen Schritt eine Annahme-/Ablehnungsphase anwendet, basierend auf einer etwas komplizierten Formel, die die Kräfte am Anfang und am Ende einbezieht. Dies garantiert das Sampling des richtigen Ensembles und kann Ihre Simulation vor den Folgen großer Kräfte schützen, wenn Sie gerade Partikel mit dem üblichen GCMC-Verfahren hinzugefügt/entfernt haben. Es hängt davon ab, ob Sie bereit sind, eine (kleine, Ö ( δ T 2 ) ) Bruchteil der Fortschrittsschritte.

Dieser Ansatz kann auch mit "Hybrid Monte Carlo" (HMC), Duane et al., Phys Lett B , 195 , 216 (1987) in Verbindung gebracht werden . Einfach ersetzen D = ( k T / 2 M ) δ T in der obigen Gleichung zu geben

R ( T + δ T ) = R + 1 2 ( δ T 2 / M ) F + k T M δ T G
Dies hat die Form eines Standardalgorithmus (Velocity Verlet) für die Molekulardynamik, wobei der letzte Term der Auswahl zufälliger Geschwindigkeiten zu Beginn jedes Schritts aus der Maxwell-Boltzmann-Verteilung entspricht. In HMC schreiben Sie auch den Rest des Geschwindigkeits-Verlet-Algorithmus auf, um die Geschwindigkeiten zu erhöhen, berechnen die Änderung der kinetischen Energie über den Schritt, addieren sie zur Änderung der potenziellen Energie und verwenden die resultierende Gesamtenergie in einer Metropolis- Akzeptanz / Ablehnungskriterium. Die Geschwindigkeiten werden dann verworfen und zu Beginn des nächsten Schrittes neu generiert. Es stellt sich heraus, dass dies genau das gleiche wie SMC ist, aber einfacher aufzuschreiben ist. Der Grund für den geringen Anteil an abgelehnten Zügen, Ö ( δ T 2 ) , ist offensichtlicher: Die Gesamtenergie bleibt in dieser Größenordnung erhalten.

Wenn Ihre Brownsche Dynamik nicht inertial ist, könnte dies der Ansatz sein, den ich empfehlen würde:

  1. Einfügen/Entfernen von Partikeln in Intervallen (zwischen Zeitvorschubschritten) unter Verwendung der standardmäßigen Grand-Canonical-Monte-Carlo-Methode
  2. Fügen Sie eine Metropolis-Entscheidung zur Annahme/Ablehnung zu den Zeitvorschubschritten hinzu, wie oben beschrieben, was bedeutet, dass ein kleiner Teil der Züge abgelehnt wird, aber garantiert, dass das richtige Ensemble gesampelt wird.

Ich habe einen einfacheren Vorschlag, der je nach Ihren Umständen vorzuziehen sein könnte oder nicht. Bleiben Sie bei Ihrer bestehenden Brownschen Dynamik, aber machen Sie Ihre Simulation dreidimensional statt zweidimensional, mit einer flachen Oberfläche, die Ihre grobkörnigen Partikel anzieht. Der Rest des Systems wäre ein Gas geringer Dichte, das als Partikelreservoir fungiert. Viel würde davon abhängen, ob Sie die Parameter anpassen könnten, um den thermodynamisch stabilen Zustand Ihres Systems zu einer an der Oberfläche adsorbierten Monoschicht zu machen . Wenn dies möglich ist, sollten Sie sehen, wie Partikel auf physikalisch vernünftige Weise an der Oberfläche ankommen und sich von ihr entfernen.

Vielen Dank, dass Sie sich die Zeit genommen haben, meine Frage zu beantworten. Ich entschied mich für eine BD-Simulation, um einfachen Zugriff auf jede Partikelposition zu haben. Mit BD ist es natürlich auch möglich, die Flexibilität der Bindungsschnittstelle zu berücksichtigen. Ihr letzter Vorschlag könnte funktionieren, aber ich denke, die Implementierung (Änderungen in meinem Quellcode) wird sehr zeitaufwändig sein. Trotzdem haben Sie ein paar interessante Dinge erwähnt, und ich überprüfe sie nacheinander.

Ihre Frage ist ziemlich weit gefasst. Meine Antwort wird also ziemlich breit ausfallen.

Einige der üblichen Dinge, um die man sich bei Monte-Carlo-Berechnungen Sorgen machen muss, sind die folgenden. Aber es gibt noch mehr.

  • Haben Sie die Annahmen, die Sie für Ihre Berechnungen verwenden werden, sorgfältig aufgezeichnet? Vielleicht Dinge wie konstante Temperatur, kein Flüssigkeitsfluss, Vernachlässigung der Schwerkraft usw. Sie sollten nach Entscheidungen suchen, die Sie getroffen haben, die sich auf die Durchführung der Berechnungen auswirken, im Gegensatz zu trivialen Details, die keinen Unterschied machen.
  • Haben Sie den üblichen alltäglichen Fragen der Softwarequalität und -korrektheit ausreichend Aufmerksamkeit geschenkt? Yada yada, nützliche Variablennamen, strukturiertes Programm, grundlegendes Testen, zumindest minimale Dokumentation des Programmverhaltens, einfache Eingabe, sinnvolle Anordnung der Ausgabe usw.
  • Hast du deine Rechnung richtig normiert? Sie haben vielleicht 1 Million Teilchen in Ihrer Berechnung, aber an einem echten Experiment sind viel mehr Moleküle beteiligt. Hast du eine vernünftige Möglichkeit, das zu skalieren? Dies gilt für jeden Aspekt Ihrer Berechnung. Wie stellen Sie die Temperatur des Arbeitsmaterials ein? Wie stellen Sie die Dichte ein? Wie skaliert man Zahlen? Usw.
  • Haben Sie die Mengen konserviert, die konserviert werden sollten? Sie möchten die Partikelanzahl ändern. Stimmt es mit dem physikalischen Prozess in Ihrem Experiment überein? Zum Beispiel Partikel, die den Rand Ihres Experiments passieren. Oder Sie haben vielleicht einen Ort, an dem Sie Partikel injizieren. Vielleicht müssen Sie sich Gedanken über die Energie oder die Gesamtmasse oder das Verhältnis der Partikelart machen.
  • Haben Sie einen Überblick darüber, wie sich die Dinge, die sich ändern sollten, tatsächlich ändern? Sie injizieren also neue Teilchen und beobachten, wie sie die Brownsche Bewegung durchlaufen. Ändert das die lokalen Bedingungen in irgendeiner wichtigen Weise? Dichte, Viskosität, Temperatur etc.
  • Hast du Zahlen, die Sinn machen? Vielleicht suchen Sie die Teilchenzahldichte an verschiedenen Orten. Zählen Sie die richtigen Dinge und zählen Sie sie vernünftig?
  • Haben Sie die Systembedingungen auf vernünftige Werte gebracht? Die Teilchen bewegen sich also unter Brownscher Bewegung. Haben Sie vernünftige Werte für die Geschwindigkeit, mit der sie sich bewegen? Die durchschnittliche Entfernung, die sie zurücklegen, bevor sie kollidieren? Der Winkel, nach dem sie sich bewegen? Die Energieänderung bei einer Kollision?
  • Haben Sie eine Art maßgebliche Datenquelle für die Validierung? Einige häufig verwendete Quellen sind Experimente, Berechnungen aus einem anderen Programm, das bekanntermaßen genau ist, oder Handberechnungen, die bekanntermaßen genau sind.