Jump to content
Geochemist's Workbench Support Forum


  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About TBush

  • Rank
  1. Hi, We have been working with specifying custom rate laws for microbial respiration in React, and have been following the example specified on Page 67 of the reaction modelling guide. This integrates the differential equation for the time rate of change of the biomass so that the biomass is then updated according to: rpave = (1.0-Theta)*rprime0 + Theta*rprime biom = biomass0*exp((growth_yield*rpave-decay_con)*Deltat) We were wondering about the numerical justification for this. It seems like it assumes that the chemical concentrations change slower over time than the biomass does, because the concentration appears in "rpave" (actually in rprime). Basically this integral seems to have ignored fact that the chemical concentration is a function of time, which would be fine if the chemical concentration were varying in time much slower than the biomass, but we were just wondering about the exact numerical justification for this. Does anyone know about the numerical justification for this integral? Also we are a bit confused by the line rpave = (1.0-Theta)*rprime0 + Theta*rprime and what the variable Theta actually does. So if someone could shed some light on this question as well then that would be great. Thanks very much. Regards, Tim Bush
  2. Hi Brian, So I have a new problem that is similar to the problem that we previously discussed with the cellulose degraders. We wish to implement a population of bacteria carrying out the reaction "H2S(aq) -> S-- + 2*H+", and have done so as follows: # (4) kinetic microbe-4 \ rxn = "H2S(aq) -> S-- + 2*H+", \ biomass = 0.001, rate_con = 1e-9, KD = 1e-6, \ mpower(H2S(aq)) = 1, mpowerD(H2S(aq)) = 1, \ ATP_energy = 0, ATP_number = 0, order1 = 1.0, order2 = 0, \ growth_yield = some number, decay_con = some number However, this results in the population becoming unrealistically big because there is no limitation. This is actually also a population of anoxygenic photosynthesizers so it doesn't really make sense to use the normal thermodynamic limitation (the TPF thing) that GWB normally uses, because of the fact that a large proportion of the energy to carry out the reaction comes from light. We would like to limit the population by some logistic term of the form (1 - biomass/ MAX_biomass) instead. I tried specifying this in a .bas script but I couldn't get it to work because I couldn't get the biomass concentration to update properly. Otherwise, we want the growth to proceed as normal, single Monod kinetics, growth yield, decay, etc. Could you please help me out with how to implement such a limitation term? Thanks for all of your help. Regards, Tim
  3. Hi, I wonder if someone can explain to me the difference between bulk and inert volume? I am finding it a bit confusing? Thanks. Regards, Tim
  4. Hi Brian, I tried what you suggested, but it produced the following error: "Unknown command: mpower(Cellulose)" and then doesn't read in the rest of the information like the growth yield Regards, Tim
  5. Hi Brian, Another quick question. The geochemists workbench documentation says that the default units of the rate constant (rate_con) are mol/cm2 sec, but when i input a rate_con React seems to default to the units mol/mg sec. What does this mean and why is it different? Does it mean moles reacted per mg of sediment per second? Regards, Tim
  6. data = thermo.tdat decouple Cellulose(aq) # Properties of the sediment column time end = 1 yr pH = 8.1 Na+ = 3000 umolal Cl- = 3000 umolal SO4-- = 20.0 mmolal CH3COO- = 0.1 umolal O2(aq) = 100 umolal CO2(aq) = 100 umolal HCO3- = .8 umolal HS- = .1 umolal CH4(aq) = .1 umolal Fe++ = 400.0 umolal Cellulose = 0.00001 umolal Porosity = 0.9 balance on Na+ react 10.0 g of Cellulose # (1) Sulfate reducers kinetic microbe-1 \ rxn = "CH3COO- + SO4-- -> 2*HCO3- + HS-", \ biomass = 0.001, rate_con = 1e-9, KA = 6.8e-5, KD = 5e-6, \ mpower(CH3COO-) = 1, mpowerD(CH3COO-) = 1, \ mpower(SO4--) = 1, mpowerA(SO4--) = 1, \ ATP_energy = -46.75, ATP_number = 1, order1 = 1/5, \ growth_yield = 4300, decay_con = 1e-8 # (2) Aerobic acetate oxidizers kinetic microbe-2 \ rxn = "CH3COO- + 2*O2(aq) -> 2*HCO3- + H+", \ biomass = 0.001, rate_con = 1e-9, KA = 1e-7, KD = 5e-5, \ mpower(CH3COO-) = 1, mpowerD(CH3COO-) = 1, \ mpower(O2(aq)) = 1, mpowerA(O2(aq)) = 1, \ ATP_energy = -45.00, ATP_number = 8, order1 = 1/8, \ growth_yield = 20000, decay_con = 1e-8 # (3) Methanogens kinetic microbe-3 \ rxn = "CH3COO- + H2O -> CH4(aq) + HCO3-", \ biomass = 0.001, rate_con = 1e-9, KA = 0, KD = 1e-3, \ mpower(CH3COO-) = 1, mpowerD(CH3COO-) = 1, \ ATP_energy = -45.00, ATP_number = 0.5, order1 = 1/2, \ growth_yield = 2000, decay_con = 1e-8 # (4) Cellulose degraders kinetic microbe-4 rate_law = 'rate_con*molality("Cellulose")/(molality("Cellulose")+KD)', \ rate_con = 1e-9, KD = 1e-6, \ rxn = "Cellulose -> 3*CH3COO- + 3*H+", \ biomass = 1000.001, \ # (5) Green Sulfur Bacteria kinetic microbe-5 rate_law = 'rate_con*molality("H2S(aq)")/(molality("H2S(aq)")+KD)', \ rate_con = 1e-9, KD = 1e-6, \ rxn = "H2S(aq) -> S-- + 2*H+", \ biomass = 0.001, \
  7. Hi Brian, Another question. At the moment the model is working fine, but the size of the population of cellulose degrading microbes doesn't seem to change. I tried to get it to update the biomass concentration using: setgwbvar("biomass", newbiom) but it didn't work. Is it because that command only works if you actually write a .bas script? If so is there some way to get it to update the biomass without writing a separate script? Thanks for all of your help. Regards, Tim
  8. Hi Brian, I just realised as well, would it not make more sense to set the log Ks as follows: Cellulose(aq) -> 3*Acetate + 3*H+ highly predominates towards acetate Cellulose -> Cellulose (aq) highly predominates towards Cellulose then decouple acetate from Cellulose(aq). This way, Cellulose will be decoupled from acetate by the fictive species cellulose(aq). The way I have the log Ks at the moment (as described above, very negative for both) means that all acetate produced ends up precipitating out as Cellulose. Maybe this is what you meant in the first place and I just got confused? Sorry for the multiple posts all at once. Thanks. Regards, Tim
  9. Hi Brian, Another question. Is it possible to specify the reaction for a custom rate law? What I want is for microbes to be doing the reaction Cellulose -> 3*Acetate + 3*H+ but with only one Monod term. Do I even need a custom rate law for that, and if so, is it possible to specify that this is the reaction? Thanks for all of your help. Regards, Tim
  10. Hi Brian, I just had a quick additional question about the motivation behind this fictive redox species Cellulose(aq). Is the idea that this allows me to vary the Cellulose without varying the acetate (because without the fictive intermediate redox species some of the cellulose might dissolve into acetate) and then all of the acetate can be generated by the kinetics of microbial respiration (which is what I want)? If so, then does this mean that the concentration of Cellulose(aq) in the system should basically always be zero? Regards, Tim
  11. Hi Brian, Thanks for that, that was really helpful. I have tried to do as you suggested, but I think maybe I have done it a bit wrong. Cellulose -> Cellulose (aq) has a log K of -100 for low temperatures Cellulose(aq) -> 3*Acetate + 3*H+ has a log K of -100 for low temperatures Does this mean that Cellulose -> Cellulose (aq) will tend to keep Cellulose as Cellulose and not Cellulose(aq), and Cellulose(aq) -> 3*Acetate + 3*H+ will tend to stop Cellulose(aq) from dissolving into acetate? If Cellulose is more stable that Cellulose(aq) then surely this means that there will never be any available Cellulose(aq) to be transformed into acetate? Also, how do i specify the rate law, is it as follows? Or should the rate law be in terms of Cellulose(aq)? kinetic Cellulose rate_law = Cellulose.bas rate constant = 10^-6 Finally, in order to decouple Cellulose(aq) from acetate, should I use "decouple acetate"? Regards, Tim Regards, Tim
  12. Hi Brian, So having played around a bit, the problem seems to be when all of the log Ks at set to 500. If I set only one of the log Ks at some arbitrary temperature to some arbitrary number then it works, and cellulose can be included. However, if they are all set to 500 then it no longer recognises cellulose as being in thermo.tdat. Does this make any sense? Regards, Tim
  13. Hi Brian, I tried adding cellulose as a "mineral" and it got added to the list ok, but it is not showing up within react so I can't include it in the model. Cellulose is C6H12O6 so I included its formation as C6H12O6 -> 3*CH3COO- + 3*H+ and set the log Ks to all be 500. Do you have any idea why this is not working? Regards, Tim
  14. Hi Brian, That helps alot, thanks. So with regard to cellulose (which is insoluble) what category would you recommend I add it under in thermo.tdat? Also, what does the program actually do if you put 500 to indicate that the log K is not known, does this mean that it just doesn't make it dissolve in the fluid at all? Regards, Tim
  15. Hi everyone, I have been using GWB to model populations of microbes cycling sulfur in sediments. I am interested in including a population of fermentative microbes that degrade cellulose and provide the acetate that is used as an electron donor in reduction reactions (like sulfate reduction). I understand that GWB has some functionality for specifying custom rate laws (such as for microbial respiration) but I am unsure as to how to include a new chemical species, because the GWB database does not currently contain cellulose. Also, will it be a problem that the production of acetate will be governed by a custom rate law and the consumption of acetate will be governed by the normal GWB functions for microbial respiration for the populations I have included. Thanks very much! Regards, Tim Bush
  • Create New...