<Kernel name="StoreContactLambdas" implementation="GranularGranularContact">
  <Parameter.EntityData name="contact" bind="@ParticlePairContact" type="ParticlePairContact" read="particle1, particle2, point, normal, depth, material, velocity"/>
  <Parameter.EntityData name="constraint" bind="@GranularGranularContactConstraint" type="ContactConstraint" read="isImpacting, body1, body2, materialIndex"/>
  <Parameter.EntityData name="constraintRow" bind="@GranularGranularContactConstraint.Row" type="Particle.ContactConstraintRow" read="lambda" write="lambda, rhs"/>
  <Parameter.EntityData name="@Particle" type="GranularBody" read="oldVelocity, oldAngularVelocity, mass, position"/>
  <Parameter.EntityData name="@CachedGranularGranularContacts" type="GranularBody.CachedGranularContact" mode="READ_WRITE"/>
  <Parameter.HashTable  name="@GranularGranularContactTable" bucketType="Physics.GranularBody.GranularGranularPair | Physics.GranularBody.CachedGranularContactPtr" mode="READ_WRITE" typedef="ParticleParticleContactTable"/>
  <Parameter.Scalar name="@contactMode" type="UInt" mode="READ"/>
</Kernel>

<Kernel name="StoreContactLambdas" implementation="GranularGeometryContact">
  <Parameter.EntityData name="contact" bind="@ParticleGeometryContact" type="ParticleGeometryContact" read="particle, body, point, normal, material, velocity"/>
  <Parameter.EntityData name="constraint" bind="@GranularBodyContactConstraint" type="ContactConstraint" read="isImpacting, body1, body2, materialIndex"/>
  <Parameter.EntityData name="constraintRow" bind="@GranularBodyContactConstraint.Row" type="Particle.ContactConstraintRow" read="lambda" write="lambda, rhs"/>
  <Parameter.EntityData name="@Particle" type="GranularBody" read="oldVelocity, oldAngularVelocity, mass, position"/>
  <Parameter.EntityData name="@Geometry" type="Geometry" read="instance, body, transform"/>
  <Parameter.EntityData name="@CachedGranularGeometryContacts" type="GranularBody.CachedGranularContact" mode="READ_WRITE"/>
  <Parameter.HashTable  name="@GranularGeometryContactTable" bucketType="Physics.GranularBody.GranularGeometryPair | Physics.GranularBody.CachedGranularContactPtr" mode="READ_WRITE" typedef="ParticleGeometryContactTable"/>
  <Parameter.Scalar name="@contactMode" type="UInt" mode="READ"/>
</Kernel>