An die Chemiker....Und Programmierer
-
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
-
Original erstellt von Prof84:
OK! ... dann spring doch! ...Ähhhm was ?
@stealth00
danke dir für deine Vorschläge.
Aber ich werde jetz erstmal sehen wie ich allein zu Recht komme.(Das ist mit Absicht groß geschrieben)
Ich muss mich jetz erstmal mit der Materie richtig vertraut machen.
Ohman hoffentlich wird das was. Hab gehört wer dumm is, muss auch dumm sterben.
Trotzdem danke an alle die mit Vorschlägen dabei waren.
Ich lasse was von Fortschritten hören, so es welche gibt.[ Dieser Beitrag wurde am 24.06.2003 um 21:50 Uhr von prolog editiert. ]
-
und wenn probs gibt, auch melden. Ein paar Leute finden sich immer die dir helfen wollen
-
Also zunächst würde ich die wissenschaftliche Literatur per EDV-Recherche sichten. Dann kannst Du Dir vielleicht die Diplomarbeit beschaffen, von der ich Dir den Link gegeben habe (den Author einfach höflich anschreiben, vielleicht kann er Dir auch weitere Tipps geben).
Ich finde das Thema nicht uninteressant, aber man sollte es am Anfang auf ein ganz kleines Gebiet beschränken. Chemische Reaktionen sind durch Enthalpie und Entropie gesteuert. Du musst daher die gesamten Bindungsenergien eingeben. In der organischen Chemie hat man dann noch die ganzen I- und M-Effekte, sterische Effekte etc. Vierringe bilden sich z.B. sehr schwer. Denke auch mal an Polymerisation oder Katalyse. Das ist ein schwieriges Thema.
Eine grundsätzliche Lösung gibt es nicht, denn sonst müssten wir in unserer Firma nicht soviel Geld für "echte" chemische Forschung ausgeben. Ich weiß nur, dass Wirkstoffchemiker mit räumlichen Programmen arbeiten, um Moleküle nach sterischen Effekten (Schlüssel-Schloss-Prinzip) zu optimieren.
Das ist aber etwas anderes, als das, was Du willst.
Nehmen wir ein konkretes Beispiel, das das Programm lösen muss:
H2 + O2 --> ? Da könnte H2O, H2O2 und O3 resultieren. Das hängt ganz von den Bedingungen ab.oder: S + O2 <--> SO2 und SO2 + 1/2 O2 <--> SO3
Ich würde mit solch einfachen Beispielen beginnen.
-
Hi
@erhard
Ich werde das mit der Diplomarbeit angehen.
Ich hab ja bereits geschrieben dass, das ganze nur eingeschränkt funktioniert.
Das Problem mit den induktiven Effekten hab ich auch gesehen. Bin aber noch zu keiner zufriedenstellenden lösung gekommen. Ich denke ich werde mich auf einige wenige gut bekannte Reaktionsmechanismen beschränken(zunächst).
Und da gibt es zu mindest in der Organik schon ein paar Sachen die man machen kann. Es gibt ja zum Glück einige einfache Faustregeln für mesomerie effekte und induktive effekte und wie sie sich auswirken. Ich denke das kann ich für meine Zwecke ausreichend beachten.
Sehr viel schwieriger wird es bei der Sterik. Ich müsste zusätzlich Bindungslängen, Bindungswinkel und Atomradien beachten. Mal ganz angesehen davon das sich Moleküle in Bewegung befinden. Aber ich denke da helfen statistische Methoden weiter.Ich werde mich jetz erstmal um die Diplomarbeit kümmern, und mir dann um die Repräsentation gedanken machen.
Ich denke bei entsprechenden Parametern kann man gute Aussagen über die Reaktionen treffen. Ich mache das von Hand auch nicht anders.
Zum Glück gibt es riesige Tabellenbücher. Was mich zum Problem der Datenspeicherung bringt. Ich habe an xml oder Datenbanken gedacht. Was meint ihr ?