123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- Notes on MCell3
- By convention "time" means time in internal simulation time units and "real
- time" means time in seconds.
- Grep for "FIXME", "XXX", or "TODO" for things to fix in the code.
- Check on usage of struct species->species_id in viz_output.c when we get
- there... how do we use it, do we need it etc...
- In react_cond.c, check_probs(), fix printfs (should they be fprintfs or
- deleted?)
- In mdlparse.y, will we ever need reaction groups?
- In struct rxn, fix comment on rxn->next according to actual usage in
- prepare_reactions().
- Label subset of species flags that pertain to counting as "Count Flags".
- Check how we handle the lack of struct surface_grid->binding_factor during a
- reaction between a volume molecule and a surface species. Surface_grid is NULL
- until a surface molecule is placed on the wall, but we need struct
- surface_grid->binding_factor to calculate reaction probability.
- Check how we initialize struct surface_grid->subvol (which subvol owns
- surface_grid?).
- It would save ~40% of struct subvolume memory usage if we got rid of BSP trees
- and therefore did not need struct subvolume->neighbor. As the code is now
- written we don't actually allocate a single struct bsp_tree anywhere.
- Use struct volume->speed_limit to set safe time step.
- Change viz output to use scheduler.
- Comment struct volume viz_*
- Write a proper information message for "mcell3 -info", i.e. struct
- volume->info_opt
- Add comments to members of struct notifications (if needed, pretty
- self-explanatory)
- Add code to ensure that each COUNT set outputs to a unique file.
- Switch notation on struct frame_data_list->viz_iterationll to not include "ll"
- Note: viz_output.c uses local variables both with and without the "ll",
- confusing.
- Change name of struct abstract_molecule->properties (which is a species) to
- something more sensible.
- Make sure that prepare_reactions always puts molecules before surfaces in
- reactant array. If it does then we can delete TODO comment in trigger_intersect
- function.
- Might be able to make which_unimolecular() faster by avoiding unnecessary rng
- usage when rx->npathways == 1.
- Change test_many_bimolecular() to return a data structure rather than a packed
- long long containing the result. C99 apparently now supports functions that
- return data structures.
- Make sure that rx->n_occurred is properly updated when test_bimolecular() and
- test_intersect()succeed but outcome_products() fails due to lack of space for
- products.
- Check logic of "if (reac_g==NULL || sg->mol[j]!=reac_g) sg->n_occupied++;" in
- outcome_products() of react_outc.c
- Look at src of libc's strdup and determine if we can use it instead of
- my_strdup.
- Add comment to poisson_dist() which points at detailed description of
- mathematical derivation of algorithm. Also write such a description.
- Bimolecular reactions between two surface molecules of the same species that
- preserve only one of the two reactants will always destroy the second reactant
- even if orientation marks suggest otherwise (this is because the "NULL" keyword
- does not act as a product placeholder in the parser). The orientation mark on
- the product is respected, however.
- Rate constants for reactions between volume molecules and surfaces (I mean
- surfaces, not surface molecules!) are currently in units of M^-1*s^-1 just like
- bimolecular reactions. This probably doesn't make sense so we should look into
- things like permeability and partitioning into membranes for a more sensible
- way to think about this.
|