Version 3 (modified by 8 years ago) ( diff ) | ,
---|
Data structures
There are two primary data structures used by the linetransfer routines in AstroBEAR
- PatchDef - This stores information about patches needed to do the ray tracing
- RayGroupDef - This stores information about a particular group of parallel rays
The basic algorithm to calculate optical depths is as follows:
Get Local Depths
Integrate across each patch and store the local (patch) contribution to the optical depth at each cell center as well as the total optical depth across the patch.
Collect Patches
For each patch, build a list of shadow-patches and send/receive the optical depth across each shadow patch.
Add Shadows
For each patch, sort the shadow patches by their earliest 'z-value' Then accumulate shadows for each patch
Currently the code just calculates the optical depth to each zone.
The Krumholz et al scheme, calculates ionization rates as well as optical depths when it traverses the tree.
- Modify tree traversal scheme to also calculate the ionization rate in addition to the optical depth
- Add routines to take ionization rate and calculate heating/cooling rates and calculate CFL
- Add routine to update energy and ionization values
- Add sub-cycling
- Will need to store ionization & heating/cooling rates in addition to optical depths at patch boundaries for AMR to work with sub-cycling so we can update ghost zones
- Implement healpix tree traversal scheme.