############################################################################### # This file is part of SWIFT. # Copyright (c) 2016 John A. Regan (john.a.regan@durham.ac.uk) # Tom Theuns (tom.theuns@durham.ac.uk) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # ############################################################################## import h5py import numpy import sys import math # Generates N particles in a box of [-2scale_height:2scale_height, 0:BoxSize, 0:BoxSize] # # The potential is long the x-axis. # # see Creasey, Theuns & Bower, 2013, for the equations: # disc parameters are: surface density sigma # scale height b # density: rho(x) = (sigma/2b) sech^2(x/b) # isothermal velocity dispersion = 0.5 r[random, 0] *= -1 r[:, 0] += 0.5 * boxSize r[:, 1] = numpy.random.rand(numPart) * boxSize r[:, 2] = numpy.random.rand(numPart) * boxSize # generate particle velocities v = numpy.zeros((numPart, 3)) v = numpy.zeros(1) ds = grp1.create_dataset("Velocities", (numPart, 3), "f") ds[()] = v m = numpy.ones((numPart,), dtype=numpy.float32) * mass ds = grp1.create_dataset("Masses", (numPart,), "f") ds[()] = m m = numpy.zeros(1) ids = 1 + numpy.linspace(0, numPart, numPart, endpoint=False) ds = grp1.create_dataset("ParticleIDs", (numPart,), "L") ds[()] = ids ds = grp1.create_dataset("Coordinates", (numPart, 3), "d") ds[()] = r file.close()