| 58 | | === Algorithm Calls === |
| | 58 | === Algorithm Outline === |
| | 59 | '''AstroBEAR subroutine in scrambler.f90 |
| | 60 | |
| | 61 | I. Call AMRInit |
| | 62 | i. read in global data |
| | 63 | II. Call !PhysicsInit |
| | 64 | i. read in physics data |
| | 65 | III. Call !LevelsInit |
| | 66 | i. Call !SinkParticleInit |
| | 67 | a. initializes variables for sink module |
| | 68 | II. Call !ModuleProblemInit |
| | 69 | i. Sets refinement criteria |
| | 70 | ii. Call !ProblemModuleInit |
| | 71 | V. Call !PhysicsFinalizeInit |
| | 72 | i. Uses EOS and finalizes q array |
| | 73 | I. Begin time-stepping |
| | 74 | |
| | 75 | |
| | 76 | '''Amr Subroutine in Amr_Control.f90: |
| | 77 | |
| | 78 | 1. Call !ParticlePreUpdate |
| | 79 | i. Call !ClearParticleMomementa |
| | 80 | ii. Call !CalcMoments |
| | 81 | iii. Call !SynchronizeMoments |
| | 82 | iii. Call !CheckForNewParticles |
| | 83 | a. If find a new particle: 1. Call !CreateNewParticle, 2. Call !AddNewSinkParticle |
| | 84 | i. Call !CollectNewParticles |
| | 85 | a. Collects particles across processors (using mpi_allgather) |
| | 86 | b. Call !CreateParticle: initializes variables for the new particle |
| | 87 | c. Call !AddSinkParticle: adds to global sink list |
| | 88 | d. Call !CreatePointGravityObject and sets these parameters |
| | 89 | i. Call !DoAccretions |
| | 90 | ii. Call !SynchronizeAccretions |
| | 91 | iii. Call !FinalizeAccretions |
| | 92 | 2. Call !ParticlePostUpdate |
| | 93 | i. Call !SynchronizeGasForces |
| | 94 | ii. Call !AdvanceParticles |
| | 95 | ii. Call !UpdateParticles (only called when on max level) |
| | 96 | |
| | 97 | Question, where does particle steps fit in with hydro, elliptic, radiative? |
| | 98 | |
| | 99 | Elliptic -> Hydro -> Particle -> Radiative? |
| | 100 | |