util.misc {CHNOSZ} | R Documentation |

Calculate *dP/dT* and temperature of phase transitions; scale logarithms of activity to a desired total activity.

dPdTtr(ispecies) Ttr(ispecies, P = 1, dPdT = NULL) GHS_Tr(ispecies, Htr) unitize(logact = NULL, length = NULL, logact.tot = 0)

`ispecies` |
numeric, species index of a mineral phase |

`P` |
numeric, pressure (bar) |

`dPdT` |
numeric, values of ( |

`Htr` |
numeric, enthalpy(ies) of transition (cal/mol) |

`logact` |
numeric, logarithms of activity |

`length` |
numeric, numbers of residues |

`logact.tot` |
numeric, logarithm of total activity |

`dPdTtr`

returns values of *(dP/dT)Ttr*, where *Ttr* represents the transition temperature, of the phase transition at the high-*T* stability limit of the `ispecies`

in `thermo$obigt`

(no checking is done to verify that the species represents in fact one phase of a mineral with phase transitions).
`dPdTtr`

takes account of the Clapeyron equation, *(dP/dT)Ttr*=*DS/DV*, where *DS* and *DV* represent the changes in entropy and volume of phase transition, and are calculated using `subcrt`

at Ttr from the standard molal entropies and volumes of the two phases involved.
Using values of `dPdT`

calculated using `dPdTtr`

or supplied in the arguments, `Ttr`

returns as a function of `P`

values of the upper transition temperature of the mineral phase represented by `ispecies`

.

`GHS_Tr`

can be used to calculate values of G, H, and S at Tr for the cr2, cr3, and cr4 phases in the database.
It combines the given `Htr`

(enthalpies of transition) with the database values of GHS @ Tr only for the phase that is stable at 298.15 K (cr1) and the transition temperatures and Cp coefficients for higher-temperature phases, to calculate the GHS @ Tr (i.e. low-temperature metastable conditions) of the phases that are stable at higher temperatures.

`unitize`

scales the logarithms of activities given in `logact`

so that the logarithm of total activity of residues is equal to zero (i.e. total activity of residues is one), or to some other value set in `logact.tot`

.
`length`

indicates the number of residues in each species.
If `logact`

is NULL, the function takes the logarithms of activities from the current species definition.
If any of those species are proteins, the function gets their lengths using `protein.length`

.

## properties of phase transitions si <- info("enstatite") # (dP/dT) of transitions dPdTtr(si) # first transition dPdTtr(si+1) # second transition # temperature of transitions (Ttr) as a function of P Ttr(si,P=c(1,10,100,1000)) Ttr(si,P=c(1,10,100,1000)) # calculate the GHS at Tr for the high-temperature phases of iron # using transition enthalpies from the SUPCRT92 database (sprons92.dat) Htr <- c(326.0, 215.0, 165.0) iiron <- info("iron") GHS_Tr(iiron, Htr) # the results calculated above are stored in the database ... info(1:3 + iiron)[, c("G", "H", "S")] # ... meaning that we can recalculate the transition enthalpies using subcrt() sapply(info(0:2 + iiron)$T, function(T) { # a very small T increment around the transition temperature T <- convert(c(T-0.01, T), "C") # use suppressMessages to make the output less crowded substuff <- suppressMessages(subcrt("iron", T=T, P=1)) diff(substuff$out$iron$H) }) ## scale logarithms of activity # suppose we have two proteins whose lengths are 100 and # 200; what are the logarithms of activity of the proteins # that are equal to each other and that give a total # activity of residues equal to unity? logact <- c(-3,-3) # could be any two equal numbers length <- c(100,200) logact.tot <- 0 loga <- unitize(logact,length,logact.tot) # the proteins have equal activity stopifnot(identical(loga[1],loga[2])) # the sum of activity of the residues is unity stopifnot(isTRUE(all.equal(sum(10^loga * length),1))) ## now, what if the activity of protein 2 is ten ## times that of protein 1? logact <- c(-3,-2) loga <- unitize(logact,length,logact.tot) # the proteins have unequal activity stopifnot(isTRUE(all.equal(loga[2]-loga[1],1))) # but the activities of residues still add up to one stopifnot(isTRUE(all.equal(sum(10^loga * length),1)))

[Package *CHNOSZ* version 1.1.0 Index]