User Tools

Site Tools


baboons

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
baboons [2014/06/09 18:03]
cook
baboons [2014/06/10 18:49]
brown Added help for humans take two
Line 24: Line 24:
   - The mean life of the decaying particle X -> 2n  (some magic decay. Not very physical, probably. But hey, we don't actually know what WIMPS are).   - The mean life of the decaying particle X -> 2n  (some magic decay. Not very physical, probably. But hey, we don't actually know what WIMPS are).
   - The energy of these neutrons (although if it is high enough, it may not matter too much?)   - The energy of these neutrons (although if it is high enough, it may not matter too much?)
-  - The abundance of X. +  - The abundance of X. Jedamzik, 2004: 7Be is suppressed if O(10^-5) neutrons per proton are injected. Increases D/H. Lifetime of ~1000 s required
   - n interaction rates with every other nucleus. ​   - n interaction rates with every other nucleus. ​
   - Mass of the WIMP. Chosen to be 100 GeV, based on the wikipedia WIMP entry, the font of all wisdom. ​   - Mass of the WIMP. Chosen to be 100 GeV, based on the wikipedia WIMP entry, the font of all wisdom. ​
Line 33: Line 33:
  
 from CDMS in 2004 suggests that this value isn't too far off.  from CDMS in 2004 suggests that this value isn't too far off. 
 +
 +**Code: ** 
 +
 +  - **How to add an Isotope to bigbang**
 +    - Add pointer identifier, id, in network.dek (e.g. ini56)
 +    - In subroutine init_bigbang:​
 +      - Add 1 to ionmax ​
 +      - Set id number (usually +1 of the last isotope)
 +        - id = number
 +      - Set ratnam (name e.g. "​ni56"​)
 +        - ionam (id) = isotope name
 +      - Set zion (# of protons)
 +        - zion (id) = Z
 +      - Set aion (mass number)
 +        - aion (id) = A
 +      - Set bion (binding energy)
 +        - bion (id) = binding energy
 +    - In net_input
 +      - Add initial abundance in xin
 +        - xin (id)
 +    - In init_isotope_rate_pointers
 +      - Set pointer to 0
 +        - id = 0
 +  - **How to add a Reaction Rate to bigbang**
 +    - Add reaction subroutine
 +    - Add reaction and reverse reaction pointers, irid and irrid, in network.dek
 +    - In subroutine init_bigbang:​
 +      - Add 2 to nrat
 +      - Set id numbers, usually +1 of last reaction
 +        - irid = number
 +        - irrid = number + 1
 +      - Set names
 +        - ratnam (irid) = reaction name
 +        - ratnam (irrid) = reverse reaction name
 +    - In subroutine init_isotope_rate_pointers
 +      - Set pointers to 0
 +        - irid = 0
 +        - irrid = 0
 +    - In subroutine bigbangrat
 +      - Call reaction subroutine
 +        - call rate_id (btemp,​bden,​ratraw(irid),​dratrawdt(irid),​dratrawdd(irid),​ratraw(irrid),​dratrawdt(irrid),​dratrawdd(irrid)
 +          - Arguments
 +            - temp => temperature in K
 +            - den => density in g/cm^3
 +            - fr => forward reaction rate, N_a<​sigma v>
 +            - dfrdt => derivative of fr with respect to temp
 +            - dfrdd => derivative of fr with respect to den
 +            - rr => reverse reaction rate, N_a<​sigma v>
 +            - drrdt => derivative of fr with respect to temp
 +            - drrdd => derivative of fr with respect to den
 +    - In subroutine bigbangtab
 +      - Add density dependence
 +        - dtab(irid) = 1.0d0 for decay
 +        - dtab(irid) = bden for 2-body interaction
 +        - Likewise for irrid
 +    - In subroutine rhs:
 +      - Add dy/dt terms
 +        - dydt(isotope1) = dydt(isotope1) - y(isotope1) * y(isotope2) * rate(irid)
 +        - dydt(isotope2) = dydt(isotope2) - y(isotope1) * y(isotope2) * rate(irid)
 +        - dydt(output) = dydt(output) + y(isotope1) * y(isotope2) * rate(irid)
 +        - Likewise for reverse reaction
 +    - In subroutine bbigbang
 +      - Add tree calls for reaction if they don't exist
 +        - call tree(isotope1,​isotope1,​eloc,​neloc,​nterms,​nzo,​iloc,​jloc,​np)
 +        - call tree(isotope1,​isotope2,​eloc,​neloc,​nterms,​nzo,​iloc,​jloc,​np)
 +        - call tree(isotope2,​isotope1,​eloc,​neloc,​nterms,​nzo,​iloc,​jloc,​np)
 +        - call tree(isotope2,​isotope2,​eloc,​neloc,​nterms,​nzo,​iloc,​jloc,​np)
 +        - call tree(output,​isotope1,​eloc,​neloc,​nterms,​nzo,​iloc,​jloc,​np)
 +        - call tree(output,​isotope2,​eloc,​neloc,​nterms,​nzo,​iloc,​jloc,​np)
 +    - In subroutine sbigbang
 +      - Add Jacobian elements
 +        - For example, for d(isotope1)/​d(isotope2)
 +          - a1 = -y(isotope1)*ratdum(irid)
 +          - nt = nt + 1, only if this Jacobian element doesn'​t already exist
 +          - iat = eloc(nt), only if this Jacobian element doesn'​t already exist
 +          - dfdy(iat) = dydy(iat) + a1
 +          - xsum(isotope2) = xsum(isotope2) + a1 * mion(isotope1)
 +          - Likewise for d(isotope1)/​d(isotope1),​ d(isotope2)/​d(isotope1),​ etc.
 +        - For example, for d(output)/​d(isotope2)
 +          - a1 = -y(isotope1)*ratdum(irid)
 +          - nt = nt + 1, only if this Jacobian element doesn'​t already exist
 +          - iat = eloc(nt), only if this Jacobian element doesn'​t already exist
 +          - dfdy(iat) = dydy(iat) + a1
 +          - xsum(isotope2) = xsum(isotope2) + a1 * mion(output)
 +          - Likewise for d(output)/​d(isotope1)
 +        - Do likewise for the reverse reaction rate, making sure not to repeat any of the above lines that shouldn'​t be done if the element already exists
 +
 +
 +
  
 Reference Papers: ​ Reference Papers: ​
baboons.txt ยท Last modified: 2014/06/13 10:24 by cook