Skip to content

Commit 5102eca

Browse files
authored
Merge branch 'main' into sapporo2_build_system_integration
2 parents a41cc80 + af37bfe commit 5102eca

4 files changed

Lines changed: 51 additions & 93 deletions

File tree

src/amuse/support/options.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
from amuse.support.core import late
88
from amuse.support import exceptions
99

10-
try:
11-
import pkg_resources
12-
except ImportError:
13-
pkg_resources = None
14-
1510

1611
class GlobalOptions:
1712
INSTANCE = None
@@ -21,11 +16,6 @@ def __init__(self):
2116
self.overriden_options = {}
2217

2318
def load(self, preloadfp=None):
24-
if pkg_resources is not None:
25-
if pkg_resources.resource_exists("amuse", "amuserc"):
26-
resourcerc = pkg_resources.resource_filename("amuse", "amuserc")
27-
self.config.read(resourcerc)
28-
2919
rootrc = os.path.join(self.amuse_rootdirectory, self.rcfilename)
3020
self.config.read(rootrc)
3121

src/amuse_tupan/interface.py

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11

2-
32
from amuse.community import *
43
from amuse.community.interface.gd import GravitationalDynamicsInterface
54
from amuse.community.interface.gd import GravitationalDynamics
65
from amuse.community.interface.gd import SinglePointGravityFieldInterface
76
from amuse.community.interface.gd import GravityFieldCode
7+
from amuse.datamodel.particles import Particle, Particles
88
from amuse.rfi.core import PythonCodeInterface
99

1010
import sys
@@ -38,7 +38,7 @@ def __init__(self):
3838
self.integrator_method = "sia21h.dkd"
3939
self.pn_order = 0
4040
self.clight = None
41-
self.particles = []
41+
self.particles = Particles()
4242
self.particles_initialized = False
4343

4444
def initialize_code(self):
@@ -60,43 +60,53 @@ def commit_parameters(self):
6060
return 0
6161

6262
def commit_particles(self):
63-
num = len(self.particles)
64-
ps = ParticleSystem(nstars=num)
63+
ps = ParticleSystem(nstars=len(self.particles))
6564
for (i, p) in enumerate(self.particles):
66-
ps.id[i] = i
65+
ps.id[i] = p.id
6766
ps.mass[i] = p.mass
6867
ps.radius[i] = p.radius # XXX: 'radius' is not yet used in Tupan.
6968
ps.eps2[i] = self.eps2/2
70-
ps.rx[i] = p.rx
71-
ps.ry[i] = p.ry
72-
ps.rz[i] = p.rz
69+
ps.rx[i] = p.x
70+
ps.ry[i] = p.y
71+
ps.rz[i] = p.z
7372
ps.vx[i] = p.vx
7473
ps.vy[i] = p.vy
7574
ps.vz[i] = p.vz
76-
self.integrator = Integrator(self.eta,
77-
self.time_begin,
78-
ps,
79-
method=self.integrator_method,
80-
pn_order=self.pn_order,
81-
clight=self.clight)
75+
76+
self.integrator = Integrator(
77+
self.eta,
78+
self.time_begin,
79+
ps,
80+
method=self.integrator_method,
81+
pn_order=self.pn_order,
82+
clight=self.clight
83+
)
8284
return 0
8385

8486
def synchronize_model(self):
8587
return 0
8688

87-
def new_particle(self, index_of_the_particle,
88-
mass, radius, x, y, z, vx, vy, vz):
89-
ps = ParticleSystem(nstars=1)
90-
ps.mass[0] = mass
91-
ps.radius[0] = radius
92-
ps.rx[0] = x
93-
ps.ry[0] = y
94-
ps.rz[0] = z
95-
ps.vx[0] = vx
96-
ps.vy[0] = vy
97-
ps.vz[0] = vz
98-
self.particles.append(ps)
99-
index_of_the_particle.value = len(self.particles)-1
89+
def new_particle(
90+
self,
91+
index_of_the_particle,
92+
mass,
93+
radius,
94+
x, y, z,
95+
vx, vy, vz,
96+
):
97+
ps = Particle()
98+
ps.id = len(self.particles)
99+
ps.mass = mass
100+
ps.radius = radius
101+
ps.x = x
102+
ps.y = y
103+
ps.z = z
104+
ps.vx = vx
105+
ps.vy = vy
106+
ps.vz = vz
107+
index_of_the_particle.value = ps.id
108+
self.particles.add_particle(ps)
109+
100110
return 0
101111

102112
def set_state(self, index_of_the_particle,
@@ -563,18 +573,6 @@ def define_parameters(self, handler):
563573
def define_methods(self, handler):
564574
GravitationalDynamics.define_methods(self, handler)
565575

566-
handler.add_method(
567-
"get_eta",
568-
(),
569-
(handler.NO_UNIT, handler.ERROR_CODE,)
570-
)
571-
572-
handler.add_method(
573-
"set_eta",
574-
(handler.NO_UNIT,),
575-
(handler.ERROR_CODE,)
576-
)
577-
578576
handler.add_method(
579577
"get_time",
580578
(),

src/amuse_tupan/packages/amuse-tupan/pyproject.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ name = "amuse-tupan"
33
dynamic = ["version"]
44
requires-python = ">=3.7"
55
dependencies = [
6-
"amuse-framework",
7-
"amuse_tupan"
6+
"amuse-framework"
87
]
98

109
[build-system]
@@ -44,4 +43,3 @@ pythonpath = ["amuse_tupan/tests/"]
4443
testpaths = ["amuse_tupan/tests"]
4544

4645
addopts = "--import-mode=append" # test the installed package
47-

src/amuse_tupan/tests/test_tupan.py

Lines changed: 13 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -174,52 +174,24 @@ def test01(self):
174174
instance.cleanup_code()
175175
instance.stop()
176176

177-
def xtest02(self):
177+
def test02(self):
178178
if MODULES_MISSING:
179179
self.skip("Failed to import a module required for Tupan")
180-
print("Testing Tupan parameters")
180+
print("Testing Tupan default parameters")
181181
instance = self.new_instance_of_an_optional_code(Tupan, self.default_converter)
182182
instance.initialize_code()
183183

184-
self.assertEqual(instance.parameters.epsilon_squared,
185-
instance.unit_converter.to_si(0.0 | nbody_system.length**2))
186-
self.assertEqual(instance.parameters.timestep_parameter, 0.125)
187-
188-
for par, value in [('epsilon_squared_star_star', 0.0 | nbody_system.length**2),
189-
('epsilon_squared_star_blackhole', 0.0 | nbody_system.length**2),
190-
('epsilon_squared_blackhole_blackhole', 0.0 | nbody_system.length**2),
191-
('initial_timestep_parameter', 1.0e-4),
192-
('timestep_parameter_stars', 0.1),
193-
('timestep_parameter_supermassive_black_holes', 0.4),
194-
('timestep_parameter_intermediate_mass_black_holes', 0.4),
195-
('max_relative_energy_error', 5.0e-5),
196-
('maximum_timestep', 1.0/1024.0 | nbody_system.time),
197-
('smbh_mass', 1.0 | nbody_system.mass)]:
198-
self.assertEqual(instance.unit_converter.to_si(value),
199-
getattr(instance.parameters, par))
200-
setattr(instance.parameters, par, 3.0 | value.unit)
201-
self.assertEqual(instance.unit_converter.to_si(3.0 | value.unit),
202-
getattr(instance.parameters, par))
203-
204-
# epsilon_squared is an alias for epsilon_squared_star_star, so epsilon_squared also has become 3:
205-
self.assertEqual(instance.parameters.epsilon_squared,
206-
instance.unit_converter.to_si(3.0 | nbody_system.length**2))
207-
instance.parameters.epsilon_squared = 0.1 | nbody_system.length**2
208-
self.assertEqual(instance.parameters.epsilon_squared,
209-
instance.unit_converter.to_si(0.1 | nbody_system.length**2))
210-
# timestep_parameter is an alias for timestep_parameter_stars, so timestep_parameter also has become 3:
211-
self.assertEqual(instance.parameters.timestep_parameter, 3.0)
212-
instance.parameters.timestep_parameter = 0.01
213-
self.assertEqual(instance.parameters.timestep_parameter, 0.01)
214-
215-
self.assertEqual(instance.parameters.include_smbh, False)
216-
instance.parameters.include_smbh = True
217-
self.assertEqual(instance.parameters.include_smbh, True)
218-
self.assertEqual(instance.parameters.calculate_postnewtonian, True)
219-
instance.parameters.calculate_postnewtonian = False
220-
self.assertEqual(instance.parameters.calculate_postnewtonian, False)
221-
222-
self.assertEqual(instance.parameters.drink, "Vodka martini. Shaken, not stirred.")
184+
self.assertEquals(instance.parameters.timestep_parameter, 0.03125)
185+
self.assertEquals(
186+
instance.parameters.epsilon_squared,
187+
instance.unit_converter.to_si(0.0 | nbody_system.length**2)
188+
)
189+
self.assertEquals(
190+
instance.parameters.begin_time,
191+
instance.unit_converter.to_si(0.0 | nbody_system.time)
192+
)
193+
self.assertEquals(instance.parameters.integrator_method, 'sia21h.dkd')
194+
self.assertEquals(instance.parameters.pn_order, 0)
223195

224196
instance.stop()
225197

0 commit comments

Comments
 (0)