SWIFTsim merge requestshttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests2020-06-03T11:11:27Zhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1089Merge Colibre AGN updates2020-06-03T11:11:27ZYannick BahéMerge Colibre AGN updatesThis merge request updates the Colibre AGN model.This merge request updates the Colibre AGN model.Matthieu SchallerMatthieu Schallerhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1085Black holes perth edition2020-05-23T16:40:08ZMatthieu SchallerBlack holes perth editionMatthieu SchallerMatthieu Schallerhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1084WIP: Merge black hole (and potentially some other) updates from Yannick's dev...2020-05-27T19:12:18ZYannick BahéWIP: Merge black hole (and potentially some other) updates from Yannick's development branch into masterThis merge request integrates the changes made in my (primarily) black hole development branch. There are some more experimental features in there that we likely do not want to include, so feel free to pick (and adapt) what seems appropr...This merge request integrates the changes made in my (primarily) black hole development branch. There are some more experimental features in there that we likely do not want to include, so feel free to pick (and adapt) what seems appropriate (a copy of this development branch is kept at yb-bhdev).
The main elements are:
- Options to fine-adjust many elements of the black hole model via YAML parameters
- Option to use black hole subgrid masses from (idealised) initial conditions
- Option to use "multi-phase" black hole accretion approach
- Option to prescribe a repositioning velocity for black holes
- Slight re-design of the black hole // gas interactions, so that gas neighbour velocities are always recorded in the black hole frame
- Some extra black hole outputs (which, as discussed previously, we may *not* want to take over to master)
- Crude option to use different levels of output (e.g. snap- and snipshots), and modify the output list upon restarting from restart files
- Option to easily block entire particle types from outputs
- Some (hopefully) clarifications and improvements to the comments
Also (added late):
- Changed the black hole output 'CumulativeNumberSeeds' to 'CumulativeNumberOfSeeds'. I kept getting this one wrong, since it is not quite consistent with the general convention of using unabbreviated, descriptive names. Feel free to ignore if there was a good reason for the original name.Matthieu SchallerMatthieu Schallerhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1083Change the level at which the sort tasks are set2020-10-16T11:15:15ZMatthieu SchallerChange the level at which the sort tasks are setThis introduces the two changes I mentioned this morning:
- Move the `stars resort` to a deeper level.
- Move the hydro and stars `sort` tasks to two levels below the super-level
This increases parallelism and hence reduces dead time.This introduces the two changes I mentioned this morning:
- Move the `stars resort` to a deeper level.
- Move the hydro and stars `sort` tasks to two levels below the super-level
This increases parallelism and hence reduces dead time.Peter W. DraperPeter W. Draperhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1080WIP: Add a small drift before dumping a restart file to avoid problems of coo...2020-08-23T20:14:28ZMatthieu SchallerWIP: Add a small drift before dumping a restart file to avoid problems of coordinationDoes what it says on the tin. This prevents a crash (with checks on) or an inconsistency when a snapshot is written during the same step as the code dumps restart files.
Fixes #624. Does what it says on the tin. This prevents a crash (with checks on) or an inconsistency when a snapshot is written during the same step as the code dumps restart files.
Fixes #624. Peter W. DraperPeter W. Draperhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1067Add sink example2020-04-29T15:21:42ZLoic HausammannAdd sink exampleSplit !1066
I am adding a small example for the sink particles. I do not think that we will keep it at the end, but it will be very useful for the first steps. This is a copy from the gravity test but the particles are sink particles a...Split !1066
I am adding a small example for the sink particles. I do not think that we will keep it at the end, but it will be very useful for the first steps. This is a copy from the gravity test but the particles are sink particles and not gparts.Matthieu SchallerMatthieu Schallerhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1066WIP: Sink particles2020-04-29T07:24:10ZLoic HausammannWIP: Sink particlesHey,
In this merge request, I am implementing the base for the sink particles. I am able to read / write the particles, restart and ... that's all.
I have also copy/paste the Isothermal example in order to run it with sink particles (I...Hey,
In this merge request, I am implementing the base for the sink particles. I am able to read / write the particles, restart and ... that's all.
I have also copy/paste the Isothermal example in order to run it with sink particles (I am planning to delete it when my work will be done).Loic HausammannLoic Hausammannhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1065WIP: Dust evolution implemented as an extension of the Element Abundances array2020-04-28T10:05:22ZJamesWIP: Dust evolution implemented as an extension of the Element Abundances arrayMerge request to contrast `dust_production_simple` and `master` branches, for consideration before embarking on a more modular implementation of the dust evolution functionality.Merge request to contrast `dust_production_simple` and `master` branches, for consideration before embarking on a more modular implementation of the dust evolution functionality.https://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1057WIP: Concurrent hydro interactions via particle-carried spin locks2020-06-21T13:38:58ZMatthieu SchallerWIP: Concurrent hydro interactions via particle-carried spin locksHere is a first-draft implementation of the atomic tasks for the hydro scheme.
To simplify things, each particle carries a lock and we try to acquire it in the tasks when we identify that a given particle will be updated. This reduce...Here is a first-draft implementation of the atomic tasks for the hydro scheme.
To simplify things, each particle carries a lock and we try to acquire it in the tasks when we identify that a given particle will be updated. This reduces the amount of unnecessary locking of an entire array of particles when for instance writing back from a cache.
Thoughts welcome on this! It does yield the correct answer and is a bit faster. Only a bit as the hydro was already pretty good. @pdraper any thoughts from you as well on this?
Note for self: Need to deal with MPI. Probably by re-initialising the lock upon receiving the data.Pedro GonnetPedro Gonnethttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1051Colibre-specific AGN updates2020-03-31T15:32:41ZYannick BahéColibre-specific AGN updatesThis merge request implements two Colibre-specific updates to the AGN model: (i) Sound speeds are calculated based on particles' subgrid density; (ii) Bondi accretion rates are calculated for each neighbour individually and then summed t...This merge request implements two Colibre-specific updates to the AGN model: (i) Sound speeds are calculated based on particles' subgrid density; (ii) Bondi accretion rates are calculated for each neighbour individually and then summed to get the total accretion rate of the BH.
These changes are also implemented in branch yb-bhdev, together with other (more experimental) variations. There, they can individually be switched on/off with YAML parameters.Matthieu SchallerMatthieu Schallerhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1045WIP: MPI parallel mesh gravity2021-08-18T15:31:24ZJohn HellyWIP: MPI parallel mesh gravityCurrently the mesh gravity calculation stores a full copy of the gravity mesh and repeats the FFT calculations on every MPI rank. In runs with many MPI ranks this increases memory use, generates a lot of communication, and limits the mes...Currently the mesh gravity calculation stores a full copy of the gravity mesh and repeats the FFT calculations on every MPI rank. In runs with many MPI ranks this increases memory use, generates a lot of communication, and limits the mesh size that can be used.
I've been looking into using the MPI support in FFTW3. The sequence of operations would be something like
* Each rank accumulates it's own contributions to the density field. These would need to be stored in some kind of sparse array to avoid making any assumptions about how the domain decomposition is done. The hash map code used in the FoF implementation might be suitable.
* Each rank allocates a slab of the full mesh as required by FFTW
* The mesh contributions are sent to whichever rank stores the corresponding slab. This is reasonably straightforward because the coordinates of a cell indicate which rank it's stored on.
* The FFT/Green function/CIC deconvolution/inverse FFT are carried out to make a slab-distributed mesh containing the potential
* Each rank calculates which cells it needs to calculate the potential gradient for its particles and requests them from whichever node they're on. This is slightly trickier than constructing the mesh because we need several cells around each particle to evaluate the gradient.
* We can then evaluate the potential and acceleration on the particles as usual
This branch executes the first three steps alongside the usual mesh calculations and reports how well the distributed density mesh agrees with the full mesh. Then it just discards the distributed mesh. Currently it's all single threaded and the distributed mesh is not quite in the right format because MPI FFTW needs some specific padding in the last dimension.John HellyJohn Hellyhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1037WIP: Resolve "Planetary physics documentation"2020-03-13T14:59:57ZJacob Kegerreisjacob.kegerreis@durham.ac.ukWIP: Resolve "Planetary physics documentation"Closes #659Closes #659https://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1028WIP: Logger: scheme dependent output2020-07-01T07:05:14ZLoic HausammannWIP: Logger: scheme dependent outputIn this merge request, I am implementing the possibility to have different scheme with the logger and also the different type of particle in the loader (but currently they cannot change during the simulation, it will be done in a next me...In this merge request, I am implementing the possibility to have different scheme with the logger and also the different type of particle in the loader (but currently they cannot change during the simulation, it will be done in a next merge request).
If you wish to take a look at the API for the schemes, you can go to `src/hydro/Gadget2/hydro_io.h` (last function), `logger/hydro/Gadget2/logger_hydro.h`. Due to the new particle types in the loader, the python API has been changed a bit, you can take a look in `logger/examples/reader_example.py`.
I will need a few days to clean it and then I will assign the merge request to Pedro.Continuous Simulation Data StreamPedro GonnetPedro Gonnethttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1020Kinetic time-step limiter2020-02-13T17:08:15ZEvgenii ChaikinKinetic time-step limiterAdding the kinetic time-step limiter to resolve the problem when particles that receive high velocity kicks from kinetic feedback free-stream through their neighbours due to their large (initial) time-steps.
The current implementation...Adding the kinetic time-step limiter to resolve the problem when particles that receive high velocity kicks from kinetic feedback free-stream through their neighbours due to their large (initial) time-steps.
The current implementation of this time-step limiter has been tested with a single isolated (`E=1e51` erg) supernova that releases all its energy in kinetic form. Without the limiter, the gas particles that receive the highest kicks traverse unrealistically large distances before they begin interacting with their neighbours. If this happens, a realistic blast-wave does not form. This effect is mitigated if the initial (prior to feedback) signal velocity `v_sig` is increased. When the time-step limiter is switched on, the blast-wave always has the correct momentum, shape, density and other physical properties, all of which are independent of `v_sig`
![shock_cartoon](/uploads/d32047952a391d691d5727f5ffc37fb7/shock_cartoon.png).
![shock_momentum_v_sig](/uploads/517a915520df5533bc5feff7c03a6e5c/shock_momentum_v_sig.png)Matthieu SchallerMatthieu Schallerhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/1008Add check for DMO simulations2020-01-31T10:55:46ZLoic HausammannAdd check for DMO simulationsHi,
In this merge request, I am doing a simple test on the IC in order to avoid running a DMO simulation that contains hydro particles in the IC.Hi,
In this merge request, I am doing a simple test on the IC in order to avoid running a DMO simulation that contains hydro particles in the IC.Matthieu SchallerMatthieu Schallerhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/996WIP: Logger log mpi part2020-08-21T13:43:00ZLoic HausammannWIP: Logger log mpi part@nnrw56, I have implement the MPI history for the index files.
We will need to merge first !970@nnrw56, I have implement the MPI history for the index files.
We will need to merge first !970Pedro GonnetPedro Gonnethttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/991Mesh gravity speed-ups2020-02-18T12:35:37ZMatthieu SchallerMesh gravity speed-upsImplements two improvements:
- Use the threadpool to apply the Green function in the PM part of the code
- Use an asynchronous all-reduce to communicate the mesh across the MPI ranks.
To implement the second part, I have removed the ...Implements two improvements:
- Use the threadpool to apply the Green function in the PM part of the code
- Use an asynchronous all-reduce to communicate the mesh across the MPI ranks.
To implement the second part, I have removed the call to `space_split()` that was in `space_rebuild()`. The `space_split()` is now called after the communication has been initiated.Peter W. DraperPeter W. Draperhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/975WIP: Resolve "Fix Uranus"2019-12-03T09:44:09ZJacob Kegerreisjacob.kegerreis@durham.ac.ukWIP: Resolve "Fix Uranus"Closes #633Closes #633https://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/966Logger restart2019-11-27T22:19:50ZLoic HausammannLogger restartThis should not be merged before !813 and needs to be redirected towards master.
Here is the implementation of the restart. This is very very simple.This should not be merged before !813 and needs to be redirected towards master.
Here is the implementation of the restart. This is very very simple.Continuous Simulation Data StreamMatthieu SchallerMatthieu Schallerhttps://gitlab.cosma.dur.ac.uk/swift/swiftsim/-/merge_requests/957WIP: Send a subset of particle struct members to speed up MPI2021-02-04T16:06:20ZPeter W. DraperWIP: Send a subset of particle struct members to speed up MPIAn attempt to unintrusively add methods to define which members of the various parts structs to send
when we don't need to update all fields. See #598 and https://gitlab.cosma.dur.ac.uk/swift/swiftmpistepsim/issues/2.
Just a MR so the c...An attempt to unintrusively add methods to define which members of the various parts structs to send
when we don't need to update all fields. See #598 and https://gitlab.cosma.dur.ac.uk/swift/swiftmpistepsim/issues/2.
Just a MR so the changes are easy to see.Peter W. DraperPeter W. Draper