Skip to content

Commit

Permalink
Merged in prabhuramachandran/pysph/fix_save_output_arrays (pull request
Browse files Browse the repository at this point in the history
#149)


BUG: Output arrays were not persisted.
  • Loading branch information
prabhuramachandran committed Mar 13, 2015
2 parents 8cf96ad + 72ddf18 commit 1b6d366
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
11 changes: 7 additions & 4 deletions pysph/base/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,10 @@ def get_particles_info(particles):
const_info = {}
for c_name, value in parray.constants.iteritems():
const_info[c_name] = value.get_npy_array()
info[ parray.name ] = dict(properties=prop_info, constants=const_info)
info[ parray.name ] = dict(
properties=prop_info, constants=const_info,
output_property_arrays=parray.output_property_arrays
)

return info

Expand All @@ -328,8 +331,8 @@ def create_dummy_particles(info):
for name, pa_data in info.iteritems():
prop_dict = pa_data['properties']
constants = pa_data['constants']
particles.append(
ParticleArray(name=name, constants=constants, **prop_dict)
)
pa = ParticleArray(name=name, constants=constants, **prop_dict)
pa.set_output_arrays(pa_data['output_property_arrays'])
particles.append(pa)

return particles
17 changes: 17 additions & 0 deletions pysph/solver/tests/test_solver_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,23 @@ def test_load_works_with_dump_version1(self):
self.assertTrue(np.allclose(pa.x, pa1.x, atol=1e-14))
self.assertTrue(np.allclose(pa.y, pa1.y, atol=1e-14))

def test_that_output_array_information_is_saved(self):
# Given
x = np.linspace(0, 1.0, 10)
y = x*2.0
pa = get_particle_array(name='fluid', x=x, y=y, u=3*x)

# When
output_arrays = ['x', 'y', 'u']
pa.set_output_arrays(output_arrays)
fname = self._get_filename('simple.npz')
dump(fname, [pa], solver_data={})
data = load(fname)
pa1 = data['arrays']['fluid']

# Then.
self.assertListEqual(pa.output_property_arrays, output_arrays)
self.assertListEqual(pa1.output_property_arrays, output_arrays)

if __name__ == '__main__':
main()
3 changes: 3 additions & 0 deletions pysph/solver/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,9 @@ def _get_dict_from_arrays(arrays):
array = ParticleArray(name=array_name,
constants=array_info["constants"],
**array_info["arrays"])
array.set_output_arrays(
array_info.get('output_property_arrays', [])
)
for prop, prop_info in array_info["properties"].iteritems():
if prop not in array_info["arrays"]:
array.add_property(**prop_info)
Expand Down

0 comments on commit 1b6d366

Please sign in to comment.