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 | |