Fortranprogramm, Einlesen von Formeln?

Rahul0891

Grünschnabel
Hallo,

seit kurzem lerne ich ein wenig Fortran, jetzt wollte ich das erste Programm schreiben,
dass keine Beispielaufgabe ist, stoße aber schon bei dem Aufschreiben des Pseudocodes
mehr oder weniger an meine Grenzen.
Vielleicht kann mir der eine oder andere eine Anstoss geben, wie ich das Problem löse.

Also, es geht um ein Kristallsystem,
das ist zum einem definiert durch irreduzible, fraktionale Atomkoordinaten und
zum anderen durch die Raumgruppe.
Jede der 230 möglichen Raumgruppen besitzt eine spezielle Anzahl von
Symmetrieoperatoren. Wenn ich dann bezüglich einer Raumgruppe
alle Symmetrieoperatoren auf die irreduziblen Koordinaten anwende
und miteinander vergleiche,
erhalte ich alle fraktionalen Koordinaten der Elementarzelle.

Nun möchte ich zwei Files in das Programm mithineinnehmen,
zuerst ein File mit der speziellen Nummer der Raumgruppe und den fraktionalen Koordinaten
und dann soll das Programm basierend auf diesem Inputfile
das entsprechende File der Raumgruppe mit den Symmetrieoperatoren öffnen.

Zum Beispiel für Raumgruppe 220 öffnet es "P220.sg"
mit
Code:
      1 220
      2 48
      3 X, Y, Z
      4 0.5-X, -Y, 0.5+Z
      5 -X, 0.5+Y, 0.5-Z
      6 0.5+X, 0.5-Y, -Z
      7 Z, X, Y
      8 0.5+Z, 0.5-X, -Y
   ...

Die erste Zeile gibt noch mal die Nummer der Raumgruppe wieder,
die zweite Zahl ist die Anzahl der Symmetrieoperatoren,
und dann kommen die Operationen für die drei Koordinaten bezüglich der
Symmetrieoperatoren.
An sich einfache Operationen, aber wie kann ich
am elegantesten meinem Programm mitteilen,
dass er jetzt Operationen durchführen soll.

Dieses Format von "P220.sg" ist halt ziemlich einfach Copy-Paste aus einer
Datenbank, deswegen sieht das so aus und es wär auch einfachsten, es
möglichst beizubehalten.

Meine bisher einzige Idee dazu wäre halt, die Operationen spaltengenau anzuordnen
und dann immer Logikabfragen durchführen, steht da ein "-X" dann rechne so, usw
Finde ich aber oll.

Vielleicht kennt ja jemand was.

Danke Rahul
 
Zurück