DrPagel-FavIcon « »

Verfasst am 05.03.2008 22:00:32 Uhr
Wird CurTiPot eine Tochter AnaPoTiKur bekommen?

Woher soll ich das ahnen? Es ist nur eine von vielen Möglichkeiten.

Zunächst gilt mein großer Dank dem Prof.Dr.Gutz aus SaoPaulo, dass er sein berühmtes Programm zu Lern- und Testzwecken als freeware bereitgestellt hat. Davor hatte ich gar keine Ahnung, was überhaupt Makros sind, geschweige denn kannte ich den Unterschied zwischen Visual Basic und StarBasic.

Eigentlich wollte ich ja nur eine Titrationskurve simulieren, mir einen Wert herauslesen und thematisch wieder etwas anderes Webloggen. Aber bis zu diesem Ziel ist es noch ein bisschen hin. Falls ich ein Chemielabor hätte, hätte ich vielleicht meine Wunsch-Titrationskurve schnell mal aufgenommen und fertig.

Nein, fertig bin ich noch nicht. Bis jetzt hatte ich mit dem Rohumbau einer ausgewählten Datenseite "pH_calc" von CurTiPot in die StarBasic-Sprache zu tun, um festzustellen, ob ein Umbau überhaupt machbar ist. Es sind immer noch einige wenige VBA-Programmelemente unverstanden, um sie nach Starbasic zu übertragen.

Nachdem der Rohumbau gelungen ist, kommt jetzt die Feinabstimmung.

Der Referenzwert aus dem Original-CurTiPot-Programm, der "negative Logarithmus der Ionenaktivität" (dts.) ("-log of ion activities" (engl.), "-log da atividade iônica" (bras.-prt.)), für das Beispiel einer verdünnten Phosphorsäure im Datenblatt "pH_calc", Tabellenzellname "H21" lautet im Double-Format pH=7,00589392451867, auf drei Stellen nach dem Komma als String 7,006 dargestellt.

Leider ergab sich bei mir ein erster Wert von pH=7,789. Eine Ursache der Diskrepanz lag darin, dass ich die Double-Variable sumz2CIon vergessen hatte, in die Parameterliste von Prozedur ATIV zu übernehmen. Wenn man bei Starbasic diese Übernahme vergisst, dann "kann man das Ergebnis vergessen". Nach dieser ersten Feinabstimmung sank mein simulierter pH-Wert auf 7,688 und es ergab sich endlich Übereinstimmung im Tabellenzellname "B21" für die "Ionenstärke" (dts.) ("ionic strength" (engl.), "Força Iônica" (bras.prt.)) FI=0,222001751307088.

Falls ich den pH des Wassers ohne zusätzliche Elektrolyten, Säuren und Basen mit meiner Starbasic-Version offline berechnen lasse, dann erhalte ich pH=6,99818342605744 und die Ionenstärke FI=0,000000100345985079187.

Es ist noch viel zu tun, bis alle Fehler vor mir flüchten... (dp) (0,75h)

Nachtrag am 5.3.2008 um 22.35Uhr:
Als nächstes stimmt der GamaH-Wert für verd.Phosphorsäure bei mir (1,25391674686961) noch nicht mit der Referenz (Original CurTiPot: 0,74281839700325) überein.

Falls ich den pH des Wassers ohne zusätzliche Additive berechnen lasse, ergibt sich bei mir GamaH=1,00072920358515.

Das wird wohl noch eine lange Nacht?

Um 23.15Uhr ist der Fehler bei mir gefunden: mein GamaH=0,742818382071903 und weicht damit akzeptabel ab der 8.Stelle nach dem DezimalKomma von der Referenz ab. Die Ursache war wieder, dass die Werte für Adav und bDav noch in meiner Parameterliste von SUB ATIV gefehlt hatten.

Nach dieser Korrektur veränderte sich mein pH-Wett wie von Zauberhand auf pH=7,00589502289581 und weicht damit von dem Referenzwert ab der 6.Stelle nach dem Komma ab.

Der Referenzwert für "GamaH * H" lautet 0,000000098652042245666. Mein PC errechnet mit Starbasic die Tabellenzelle "F21" = 0,0000000986517928502049. Immerhin bis zur 11.Stelle nach dem Komma ist Übereinstimmung bzw. für die ersten vier von Null verschiedenen Ziffern.

Ich glaube, mit diesem "Rechenfehlerrauschen" kann man leben?

Es werden bei mir noch Abweichungen von der Referenz in den Feldern "J21" und "N21" entdeckt. Eine zusätzliche Aufnahme von Bwc in die Parameterliste von SUB ATIV beseitigt die Abweichung noch nicht. Es fehlte in meiner Übergabeliste noch die Variable Bw. Nun aber stimmt mein pOH-Wert im Feld "J21" = 6,9911066407754 in den ersten 14 Ziffern mit der pOH-Referenz 6,99110664077541 überein und mein "negativer Logarithmus der OH-Ionenkonzentration" (dts.) ("-log of ion concentrations" (engl.), "-log of ion concentra" (bras.-prt.)) im Feld "N21" stimmt in allen Ziffern mit dem Referenzwert 6,86198928671098 überein.

Mehr geht heute nicht mehr. Morgen ist auch noch ein Tag. Gute Nacht! (dp) (2h)

Nachtrag am 6.3.2008 um 05.40Uhr:
So, die Feinabstimmung des Datenblattes pH_calc ist meines Erachtens bei mir abgeschlossen. Hierzu habe ich noch zusätzlich zwei IF-Bedingungen eingebaut, um einige Bereiche nicht mit 0,000 zugemüllt zu bekommen. Möglicherweise übernimmt die VBA-Funktion Range( myCellname ).Offset( I, J ).Value = 0 die Aufgabe, diese Tabellenfelder leer zu lassen. Unter StarBasic geht dies anscheinend nicht. Dort darf entweder in einem solchen Fall gar kein Wert in ein vorher freies Feld eingetragen werden oder aber müssen die Nullen mit einer Methode mySheet.getCellRangeByName( myCellname ).getCellByPosition( J, I ).string = "" gelöscht werden. Dagegen habe ich in dem Bereich B44 bis H50 die ausgerechneten Werte belassen, weil alle diese "Aktivitätskoeffizienten der untersuchten Spezies" bzw. Gama(J, I)-Werte einer Exponentialfunktion zur Basis 10 gehorchen, daher größer Null sind, auch wenn sie nicht benötigt werden. (dp)(0,25h)
archiviert (tbid1994.381): (dp) 17.06.2009 (+0,1h (+flagcounter +home.icon +w3c_LiCh))
Haftungsausschluss
free counters
© drpagel.de Alle Rechte vorbehalten.