An die Chemiker....Und Programmierer



  • Hi

    Ich würde gern ein Tool schreiben, dass chemische Rektionen zunächst qualitativ simuliert und auswertet.

    Ich bin gerade in der Planungsphase und stelle fest, dass es gar nicht so einfach ist, die entsprechenden Klassen zu entwerfen. Wie repräsentiere ich Orbitale,Moleküle,Atome und ist es überhaupt nötig ? Allein die Komplexität der möglichen Moleküle macht eine Umsetzung schwierig.

    Ich habe im Moment so angefangen das ich:

    Eine Molekülebasisklasse vorsehe und Aliphaten und cyclische Moleküle ableite.
    Nun ist es schon schwierig eine Klasse für ein cyclisches Molekül zu entwerfen, da die gesättigten Moleküle noch Wasserstoffatome(oder anderes) an den C-Atomen besitzen was der Gruppe C-H nen alipahtischen character gibt und ich schon bei den cyclischen Molekülen eigentlich ein komplexes Molekül hab.

    Oder sollte ich vielleicht funktionelle Gruppen in Klassen kapseln ?!
    Es wird nicht besser bei Seitenketten.
    Wie finde ich stabile mesomere Grenzstrukturen um evtl. Substitutionsorte richtig zu bestimmen. Usw. usw.

    Vielleicht hat ja einer von euch ne Idee.
    Vielleicht brauch ich ja den ganzen Aufwand garnicht zubetreiben !?

    Ziel ist dass die Klassen quasi autonom interagieren bei gegeben Randbedingungen.



  • Bin zwar kein Chemiker, zur Visualisierung empfehle ich Dir VTK -> http://www.kitware.com/ Es ist frei und hat ein Super Rendering...

    Winn



  • Hi

    Danke für den link. Aber im moment brauche ich das noch nicht visualisieren. Ein einfacher Textautput reicht für den Anfang. Trotzdem danke für das schnelle feedback. 😉



  • Bin Chemiker. Vielleicht sollten wir erstmal das Ziel diskutieren. Was soll das Programm als Minimum leisten?



  • ich kenn mich auch etwqs mit ch aus...

    Also, für jedes Molekül eine eigenen Klasse zu erstellen, finde ich übertrieben. Ich würde vielleicht ein Array anlegen, welches die funktionellen Gruppen seichert. Vieleicht auch ne verkettete Liste, und wenn sich die Kette verzwweigt, dann zeigt das Listenelement auf zwei Folgeglieder oder so.

    Aber das ist ja nur für die organische Chemie, die anorganische läuft da ja ganz anders ab...

    Maxi



  • In einer solchen Phase eines Projekts sollte man noch nicht in den Kategorien "Klasse" oder "Array" denken, sondern zunächst mal die Frage stellen, was man überhaupt will, was sind die Anforderungen, was tut die Software?



  • struct Atome
    {
    string atomname, bezeichnung;
    int p, e, n;
    int size;
    };

    Sowas vielleicht?

    p=Protonen (z.B. 1)
    e=Elektronen (z.B.1)
    N=Neutronen (z.B. 1)
    size=Größe des Atoms in Attometer (10 hoch -18)
    atomname=Name (z.B. Wasserstoff)
    bezeichnung=Bezeichnung unter Chemikern (z.B. H)

    Und dann daraus ein Array, geh doch die ganze Palette entlang, erstmal die Grundstoffe. Daraus kannst du dann Formen basteln, z.B. Wasser:

    struct wasser
    {
    Atome Wasserstoff=Atoms[0] //Wasser
    Atome Sauerstoff=Atoms[...] //Sauerstoff
    };



  • @Marc++us & Erhard Henkes

    Wie bereits eingangs beschrieben, sollen Reaktionen simuliert werden. Da das ganze zunächst Qualitativ geschehen soll,muss ich also eine Möglichkeit finden dem Program beizubringen, wann welche Reaktionen ablaufen. Dies wird nur mit Wahrscheinlichkeite möglich sein.

    Großes Ziel ist z.B. gefährliche Reaktionen nicht mehr im Labor durchführen zu müssen, oder aber Reaktionen, welche noch nicht gemacht werden konnten in einer solchen Simulation zu ermöglichen. Ich stelle es mir auch spannend vor, soetwas für die Synthese einzusetzen. So eine Art Brute Force chemiker. Es werden zufällig Verbindungen aus dem Pool der Elemente erzeugt und wenn die Produkte stabil sind, werden sie gespeichert wenn nicht verworfen.

    Es gibt schon ähnliche Programme, welche aber in der Regel rein mathematisch bzw. physikochemisch an die Sache heran gehen und Gleichungen für die entsprechenden Systeme lösen.

    Ich hoffe es ist klarer geworden was das Ziel ist.

    Dabei gibt es mehere Probleme:

    Jedes Molekül muss über sich bez. über seinen Zustand bescheid wissen.
    Zum einen meine ich damit die Topographie und zum anderen den Physikalischen Zustand. Also Impuls, Geschwindigkeit, evtl. Rotation.

    Moleküle müssen in Interaktion treten können. Zusammenprälle müssen erkannt werden und entsprechend reagiert werden.

    Das ist schon ein Problem. Denn dann muss entweder jedes Molekül seinen eigen Status und zusätzlich den der Anderen kennen. Das sind viele Daten.

    Ich hab bei diesem Problem zwei Ansätze:
    1. Es gibt eine übergeordnete Instanz, welche den Status aller Moleküle kennt und so eine Art Beobachter(Ringrichter) im Reaktor ist.
    2. Die Anzahl der Moleküle ist gering. Was aber zu dem Problem führt das evtl. "Zusammenstöße" weniger wahrscheinlich werden. Aber bei passendem Aussmaß des Reaktors dürfte das zu schaffen sein.

    Und das sind nur einige Probleme, die ich bis jetzt hab.



  • @spieleprogrammier

    So ähnlich ist meine Idee ja gewesen.
    Ich hab nur das Problem das im Prinzip dem Programm gesagt werden muss wie es solche Verbindungen aufbaut. 😉





  • Hi

    Hmmm, ja cooler link. Aber wo is die Diplomarbeit ?



  • Hmm, als erstes müsstest du für jedes Atom die Werte eingeben unter welchem Wert es elektronen abgeben will, unter welchem Umständen es sie behalten will.
    Da kommst nicht drumrum, die verschiedenen Werte einzeln zu initialisieren.
    Phase 2:
    Lasse 2 Atomgruppen aufeinader los.
    Cl+H=X??
    Wieso sollten sie sich verbinde?
    Checke die Chemischen Variablen (Ionisierungenergie, Energie die Cl hergeben kann um ein elektron zu bekommen)..
    Wenn alles klappt, verbinde beide!
    ABER: Wir sprechen hier von einer Hochkomplexen Simulation, die z.T. tausende Regeln beachten muss. Verschiedene wertigkeit von gleichen Atomen (Eisen z.B.) besonderheiten bei manchen Atomen (P4, oder S8)..
    Also praktisch einer Teilchensimulation, die eine REALE PHYSIKALISCHE Welt nachahmt. Und das wird eine Heidenarbeit...



  • Original erstellt von Spieleprogrammierer:
    **struct Atome
    {
    string atomname, bezeichnung;
    int p, e, n;
    int size;
    };

    Sowas vielleicht?

    p=Protonen (z.B. 1)
    e=Elektronen (z.B.1)
    N=Neutronen (z.B. 1)
    size=Größe des Atoms in Attometer (10 hoch -18)
    atomname=Name (z.B. Wasserstoff)
    bezeichnung=Bezeichnung unter Chemikern (z.B. H)

    Und dann daraus ein Array, geh doch die ganze Palette entlang, erstmal die Grundstoffe. Daraus kannst du dann Formen basteln, z.B. Wasser:

    struct wasser
    {
    Atome Wasserstoff=Atoms[0] //Wasser
    Atome Sauerstoff=Atoms[...] //Sauerstoff
    };**

    Weisst du wieviele Moleküle es gibt? Ok ich fang mal an aufzuzählen:
    H2O
    H2O2
    Methan, Ethan, O2....
    Es gibt tausende. Deswegen ist Hardcoden glaube ich nicht das Ziel sondern durch einfaches Mischen von Elementen die Möglichen Verbindung zu bekommen. Da heisst es für Prolog wohl oder übel Ionisierungsenergien abtippen, Molekulare verschiedenheiten einzuberechnen etc



  • Ich hab zwar keine Ahnung von Chemie, aber man könnte doch alle Atome in einer Datenbank speichern, und dann alle in eine struktur einlesen, so wie oben genannt.



  • Original erstellt von stealth00:
    **
    Weisst du wieviele Moleküle es gibt? Ok ich fang mal an aufzuzählen:
    H2O
    H2O2
    Methan, Ethan, O2....
    Es gibt tausende. Deswegen ist Hardcoden glaube ich nicht das Ziel sondern durch einfaches Mischen von Elementen die Möglichen Verbindung zu bekommen. Da heisst es für Prolog wohl oder übel Ionisierungsenergien abtippen, Molekulare verschiedenheiten einzuberechnen etc**

    Ich hab glaube ich mal gelesen dass es allein über 15 millionen organische Verbindungen gibt.
    Wie viele es acuh immer sein mögen: Das abtippen oder speichern in structs scheitert auch schon daran, dass ja viele mögliche Strukturen (Isomerie) möglich sind. Auch weitere Besonderheiten etc. etc. sind denkbar. Da muss man wohl tatsächlich einen anderen Weg finden.



  • Wie ich schon sagte kommst du um eine Simulation der du alle Redox-regeln beibringst nicht rum. Zusätzlich wirst du noch ein paar Besonderheiten beachten müssen (P4, S8)



  • Original erstellt von prolog:
    **Wie bereits eingangs beschrieben, sollen Reaktionen simuliert werden. Da das ganze zunächst Qualitativ geschehen soll,muss ich also eine Möglichkeit finden dem Program beizubringen, wann welche Reaktionen ablaufen. Dies wird nur mit Wahrscheinlichkeite möglich sein.

    Großes Ziel ist z.B. gefährliche Reaktionen nicht mehr im Labor durchführen zu müssen, oder aber Reaktionen, welche noch nicht gemacht werden konnten in einer solchen Simulation zu ermöglichen. Ich stelle es mir auch spannend vor, soetwas für die Synthese einzusetzen. So eine Art Brute Force chemiker. Es werden zufällig Verbindungen aus dem Pool der Elemente erzeugt und wenn die Produkte stabil sind, werden sie gespeichert wenn nicht verworfen.

    Es gibt schon ähnliche Programme, welche aber in der Regel rein mathematisch bzw. physikochemisch an die Sache heran gehen und Gleichungen für die entsprechenden Systeme lösen.

    Ich hoffe es ist klarer geworden was das Ziel ist.

    Dabei gibt es mehere Probleme:

    Jedes Molekül muss über sich bez. über seinen Zustand bescheid wissen.
    Zum einen meine ich damit die Topographie und zum anderen den Physikalischen Zustand. Also Impuls, Geschwindigkeit, evtl. Rotation.

    Moleküle müssen in Interaktion treten können. Zusammenprälle müssen erkannt werden und entsprechend reagiert werden.

    Das ist schon ein Problem. Denn dann muss entweder jedes Molekül seinen eigen Status und zusätzlich den der Anderen kennen. Das sind viele Daten.

    Ich hab bei diesem Problem zwei Ansätze:
    1. Es gibt eine übergeordnete Instanz, welche den Status aller Moleküle kennt und so eine Art Beobachter(Ringrichter) im Reaktor ist.
    2. Die Anzahl der Moleküle ist gering. Was aber zu dem Problem führt das evtl. "Zusammenstöße" weniger wahrscheinlich werden. Aber bei passendem Aussmaß des Reaktors dürfte das zu schaffen sein.

    Und das sind nur einige Probleme, die ich bis jetzt hab.**

    *hahaha* 😃 😃 😃

    Ich habe zwar nur eine Diplomprüfung in Biochemie abgelegt...
    1 Semster "Nummerische Methoden in der Chemie" (Fortran77)
    6 Semster physikalische Chemie - von 'Statische Thermodynamik' bis 'Katalyseeffekte' ...
    4 Semster Organische Chemie - ob ich heute noch jede Namensreaktion kann und jeden Lösungsmittel-Effekt kenne, weiß ich jetzt zwar nicht...
    1 Semsster technische Chemie ...
    18 Monate Anstellung in der Verfahrenstechnik ... und da hatte ich zufällig auch mit Reaktoren zu tun...
    15 Monate in einen privaten Forschungsinstitut...

    ... und die Jungs aus der "Theoretischen Chemie" sind noch besser drauf... die beschäftigen sich nur mit solchen Problemen ... nach 4,5 Regelstudienzeit und 3-5 Jahren Promotion...

    ... doch dann kam prolog! ...Alles für den A. ... er schüttelt "qualitativ" jeden Parameter eines einzigen Moleküls programmtechnisch aus dem Ärmel, wo jeder Wissenschaftler nur statische Aussage treffen kann.... und die "Heisenbergische Unschärferelation" wollen wir ja auch nicht vernachläsigen....

    Stellt sich auch die Frage, was für einen geilen Compi man haben muss, um 1 mol (6,022 x 10E23 Teilchen) nummerisch zu erfassen... und dann auch noch "obitalmässig" .... 🙄

    @prolog :
    Ok! - Du merkst schon ...
    Du hast keine Ahnung wovon Du redest!

    Nix für ungut!

    P84



  • HI

    Aha, ich hab keine Ahnung wovon ich rede ?

    Hmmm das is interressant.
    Wieso soll es nicht möglich sein, wenn auch für ein eigeschränktes Gebiet, solche Aussagen zu treffen. Was machen den die Leute bei der Synthese ?
    Die kippen auch nich einfach irgendwas innen Reaktor. Und gucken ma ob das was wird.

    Es gibt also durchaus Aussagen die man treffen kann.
    Es ist schon klar das es schwierig wird(und der Begriff ist jetz nur dir zu Liebe gewählt worden) gleichzeitig Ort und Impuls eins Teilchens wie dem Elektron beliebig genau zu bestimmen. Ich glaube, ich weis nich genau wie das heisst, weil ich ja keine Ahnung hab, warte, ich glaube Unschärfe.
    Aja das hast du ja auch schon geschrieben. Man was denkst du eigentlich ?

    Ich setz mich hin und hab keinen Plan von der Materie oder was ?
    Es gibt zum Glück ein zwei Leute in meiner Umgebung die mich dahin gehend motivieren ruhig an dem Problem zu arbeiten.

    Ich halte es für eine Herausforderung und fühle mich von dieser angezogen.
    Und ich werde nicht, ich wiederhole, ich werde nicht damit aufören weil ein Herr Dipl. BioChemiker daher kommt und sagt, es geht nicht.

    Es geht nicht darum diesen Microkosmus bis ins kleinste Detail darzustellen.
    Das es Unschärfen gibt ist klar, na und! So lange ich das weiss ist das doch kein Problem. Man es gibt n Haufen gebiete bei denen das so ist. Und trotzdem können mit hoher wahrscheinlichkeit Aussagen gemacht werden.

    Wenn du meinst es fehlt mir an fachlicher Kompetenz dann kann ich damit leben, und dir eingeschrenkt zu stimmen, aber, und jetz stell deine Lauscher auf:

    Es gibt ein paar Leute da draußen, die sich auskennen und die auch bereit sind Fragen zu beantworten, ohne gleich von einem Flame in den anderen zu geraten nur weil sie ein Diplom oder nen Doktortitel haben. Aber is schon ok.
    Wenn ich das ma so sagen darf, ist es schon merkwürdig ausgerechnet das von nem Wissenschaftler zu hören.
    Wenn es nur solche Leute gegeben hätte, würden man wahrscheinlich immer noch glauben das die Erde ne Scheibe ist, wir von einem mysteriösen Äther umgeben sind und Lichtgeschwindigkeit nur für Teilchen ohne Ruhemasse zu erreichen ist.
    Uups letzteres stimmt ja. Na macht nix....

    So dann sag ich ma ... Tell it to the Hand Profi



  • OK! ... dann spring doch! ... 😃



  • Original erstellt von Prof84:
    OK! ... dann spring doch! ... 😃

    Anstatt zu flamen (ja ich weiss wieviel Spaß es macht :D) könntest du ja vorschläge machen wo man am besten einschnitte machen könnte.

    Fangen wir ganz einfach an:
    Reaktionen verschiedener Stoffe. Grenzen wir die Stoffe vorerst ein. Nur die ersten 2 Perioden, nur die Hauptgruppen. Dann hast du 10 Stoffe. Nehmen wir weiterhin die noch unerforschten weg (glaube 7te Periode der 2te Teil) dann hat man nur ein paar Atome die sich von der Hauptgruppe unterscheiden. Für diese Hauptgruppen ein Regelwerk zu erstellen und die Atome dann den Hauptgruppen zuzuweisen dürfte doch nicht so schwert sein. Niemand verlangt eine Simulations der Orbital Elektronen, natürlich mit der Theorie von Tauchbahnen.

    Also, mach mal vorschläge oder gebe tipps, wie man deiner Meinung nach Redox Reaktionen etc simulieren könnte.
    Ich dachte da (wie gesagt) an die verschiedenen Energie-Beträge. Ist die Energie von Cl groß genug um Li ein Elektron entreissen zu können? Wenn ja, entstehen 2 Ionen oder ein Molekül mit einem Bindeelektron etc...
    ALso helf mit anstatt rumzuzicken 😉


Anmelden zum Antworten