Chem


Chem er et program til integration af kemiske hastighedsudtryk. Det vil sige, at programmet udregner hvordan et kemisk system vil udvikle sig i tiden ud fra de differentialligninger, som man har valgt at beskrive systemet med og de begyndelsesbetingelser man har angivet. Når programmet køres læser ("parser") det først en tekstfil, der beskriver reaktionssystemet. Ud fra dette genereres et c-program, der efterfølgende integrerer systemet og skriver resultaterne ned i en tekstfil.

I praksis laver man først tekstfilen der beskriver ens reaktionssystem med emacs (eller en anden editor). Den kunne f.eks. hedde "reaktionssystem.des". Herefter køres chem med denne fil som input. I vores eksempel ville det se sådan ud:

> chem reaktionssystem.des

CHEMD v.e1.00  Copyright(C): 2001 Preben Graae Sørensen
REACTION PARSING OK
END OF COMPILATION
START RUN
DATAFILE: chemdat
END RUN
>

Resultaterne af den numeriske integration findes nu i tekstfilen "chemdat" som f.eks. kan plottes med gnuplot. Mere information om hvordan chem virker findes her.

Hjælp: Chem vil ikke starte, "command not found".

Kemiske reaktioner

Et kemisk reaktionssystem består af en række kemiske reaktioner. For hver af disse reaktioner skal man beskrive støkiometrien og det hastighedsudtryk, der gælder for reaktionen. Først angives reaktionens navn eller nummer efterfulgt af kolon. Derefter angives reaktionen og dens støkiometri, afsluttet med semikolon. Til sidst angives reaktionens hastighedsudtryk, ligeledes afsluttet med semikolon. For eksempel:

1:           A   ->   B;        v> = k1*[A];
2:      X + 2Y   ->   2Z;       v> = k*[X]*[Y]**2;
3:      X + 2Y   ->   2Z;       k> = k;
4:     S1 + S2  <=>   P1 + P2;  k> = k4f; k< = k4r;
MM:          S   ->   P;        v> = Vmax*[S]/(Km + [S]);

Bemærkninger:
I nogle tilfælde er koncentrationen af et stof givet ved koncentrationerne af andre stoffer via et støkiometrisk bånd. I chem angives dette således:

[AMP] = Atotal - [ATP] - [ADP];

På samme måde kan man angive en formel for en parameter, således at denne løbende udregnes:

energycharge = ([ATP] + 0.5*[ADP])/([ATP] + [ADP] + [AMP]);
 

Inputfilens struktur

Chem har brug for en række yderligere oplysninger før den kan simulere reaktionssystemet, og der er visse begrænsninger på rækkefølgen af disse ting. Det, der her er vigtigt, er, at man har defineret en parameter, inden den bruges. Chem har ikke noget indbygget tjek for dette: det er brugerens ansvar at sikre, at alle parametre bliver tildelt en værdi, inden de bruges. Man undgår nemmest problemer hvis chems inputfil har følgende struktur:
1)    hjælpeparametre
2)    parameterdefinitioner
3)    reaktionsbeskrivelser
4)    støkiometriske bånd
5)    begyndelseskoncentrationer
De enkelte elementer gennemgåes i detaljer herunder.
Hjælpeparametre
Her angives hvordan integrationen skal udføres:

datafile = "filename";
Angiver navnet på outputfilen. Hvis denne hjælpeparameter ikke angives placeres chems output i filen "chemdat".

stime = 0;
Starttid for integrationen. Hvis intet angives sættes stime til nul.

dtime = 0.1;
Tidsskridt for udskrift til outputfilen. Bestemmer udelukkende hvor ofte der skrives ud, og har ingen indflydelse på integrationens tidsskridt. Hvis intet angives sættes dtime til en.

etime = 400;
Sluttidspunkt for integrationen. Bestemmer hvor længe der skal integreres. Hvis intet angives integreres til tiden 10.

epsr = 1.0E-10;
Ønsket relativ nøjagtighed af integrationen. Se Numerical Recipes for detaljer.Kan udelades.

epsa = 1.0E-18;
Ønsket absolut nøjagtighed af integrationen. Se Numerical Recipes for detaljer.Kan udelades.

modestiff = 1;
Angiver hvilken integrationsmetode der skal anvendes. Kan udelades. (1: BDF til stive systemer . 0: ADAMS til systemer der ikke er stive. Hvis intet angives bruges "modestiff = 1;".)
 

Parametre
Parametre defineres således:

T = 273.15;
k1 = 7.9E13;

Man kan også angive en liste af parameterværdier. Systemet integreres så en gang med hver parameterværdi i listen. Alt output placeres i den samme outputfil, hvor de forskellige kørsler er adskildt af to blanke linier. Dette betyder, at man kan plotte resultaterne af de enkelte kørsler hver for sig ved hjælp af gnuplots plottefunktions nøgleord "index". Parameterlisten kan angives på to måder. Enten angives alle de ønskede parameterværdier efter hinanden adskildt af komma:

T = 268.15, 273.15, 278.15, 283.15;

eller også angives et interval af parameterværdier på formen startværdi : slutværdi : skridtlængde. F.eks. har

T = 268.15 : 283.15 : 5;

den samme virkning som den foregående parametertildeling.

Reaktionsbeskrivelser
Reaktioner beskrives som allerede forklaret. Hvis man foretrækker at arbejde direkte med differentialligningerne, kan man vælge at skrive dem ind direkte:

x' = 1.23*x*y;
 

Begyndelseskoncentrationer
Begyndelseskoncentrationer angives således:

[A](0) = 2.5E-3;

Hvis man ikke angiver en begyndelsesværdi for en variabel sættes dens startværdi til nul. Man kan ikke direkte lave en liste af begyndelseskoncentrationer, men det kan gøres indirekte ved at sætte en begyndelsesværdi lig med en parameter, som så kan varieres.

Kommentarer
Man kan indsætte kommentarer et vilkårligt sted i inputfilen. Enten kan man skrive en kommentar omgivet af /* og */, eller også kan man skrive en kommentar der starter med # i slutningen af en linie.
 

Eksempler

Nedenfor er nogle eksempler, der viser hvordan chem virker. Samtidig illustrerer de flere vigtige kinetiske begreber og metoder.