#!/usr/bin/env python

# Demontrate memory leak in force

import simtk.chem.openmm as openmm
import simtk.unit as units
import testsystems
import gc

# Create solvated alanine dipeptide
print "Constructing alanine dipeptide in explicit solvent..."
#[system, coordinates] = testsystems.AlanineDipeptideExplicit()
[system, coordinates] = testsystems.KobAndersen()

# Initialize an integrator with arbitrary parameters.
temperature = 1.0 * units.kelvin
collision_rate = 90.0 / units.picosecond
timestep = 1.0 * units.femtosecond
integrator = openmm.LangevinIntegrator(temperature, collision_rate, timestep)

# Choose platform
platform_name = "OpenCL"
#platform_name = "Reference"
platform = openmm.Platform.getPlatformByName(platform_name)

# Compute gradient repeatedly.
niterations = 1000
print "Constructing many Context objects (and allowing them to fall out of scope)..."
for iteration in range(niterations):
   print "iteration %d / %d" % (iteration, niterations)
   # Create a Context
   context = openmm.Context(system, integrator, platform)   
   context.setPositions(coordinates)

   

