float getSolventValue(int x, int y, int z) {

		// old method -- not used

		solvent_voxel.setValue(x, y, z, Float.MAX_VALUE);
		float rA, rB;
		Point3f ptA, ptB;
		for (int i = 0; i < solvent_nAtoms && solvent_voxel.value >= -0.5; i++) {
			ptA = solvent_ptAtom[i];
			rA = solvent_atomRadius[i];
			float v = solvent_voxel.ptXyz.distance(ptA) - rA;
			if (v < solvent_voxel.value)
				solvent_voxel.setValue(i >= solvent_firstNearbyAtom ? Float.NaN : v);
		}
		if (solventRadius == 0)
			return solvent_voxel.value;
		Point3f ptV = solvent_voxel.ptXyz;
		for (int i = 0; i < solvent_nAtoms - 1 && solvent_voxel.value >= -0.5; i++) {
			ptA = solvent_ptAtom[i];
			rA = solvent_atomRadius[i] + solventRadius;
			for (int j = i + 1; j < solvent_nAtoms && solvent_voxel.value >= -0.5; j++) {
				if (i >= solvent_firstNearbyAtom && j >= solvent_firstNearbyAtom)
					continue;
				ptB = solvent_ptAtom[j];
				rB = solvent_atomRadius[j] + solventRadius;
				float dAB = ptA.distance(ptB);
				if (dAB >= rA + rB)
					continue;
				float dVS = checkSpecialVoxel(ptA, rA, ptB, rB, dAB, ptV);
				if (!Float.isNaN(dVS))
					solvent_voxel.setValue(solventRadius - dVS);
			}
		}
		return solvent_voxel.value;
	}