## Interaction with CindyLab

#### The simulation environment: `simulation()`

Description: This operator provides a handle to the simulation environment. The simulation environment offers several fields than can be used to access its global properties.

Name | Writeable | Type | Purpose
`friction` | yes | real | total friction of the simulation
`gravity` | yes | real | total gravity of the simulation
`kinetic` | no | real | total kinetic energy of the simulation
`ke` | no | real | total kinetic energy of the simulation
`potential` | no | real | total potential energy of the simulation
`pe` | no | real | total potential energy of the simulation

#### Applying a force: `addforce(<mass>,<vec>)`

Description: Applying a force `<vec>` to an existing mass `<mass>`. This operator is useful to implement user defined force fields. It should be called in the `Integration Tick` slot.

#### Applying a force: `setforce(<mass>,<vec>)`

Description: Setting the force `<vec>` for an existing mass `<mass>`. This operator is very useful to implement user defined force fields. It should be called in the `Integration Tick` slot.

#### Probing particle forces: `force(<vector>)`

Description: The operator `force` is closely related to physics simulations in CindyLab. It can be used for testing the force that would affect a mass particle at a specific position. The vector `<vector>` represents the position. The operator returns a two-dimensional vector that is the force at this position. If no modifiers are used, the operator assumes that the probe particle has `mass=1`, `charge=1` and `radius=1` (see Free Mass).
Example: The following picture was generated using the `drawforces` operator and a color plot of the `force` operator. It shows the force field and force strength of the electrostatic field of two charges.

    A.charge=(|C,G|-3)*3;
    B.charge=(|E,H|-3)*3;
    f(x):=max((0,min([x,1])));
    colorplot([0.1,0.1,0.1]+hue(f(abs(force(#)/3))),(-10,-10),(20,10));
    drawforces(stream->true,move->0.2,color->[0,0,0],resolution->10);

Modifiers: It is also possible to set the values of mass, charge and radius explicitly. Each of these values can be set by a modifier of the same name. If at least one of these values is set explicitly, then all unset values are set to zero. Thus `force([0,0],charge->2)` tests the force that would be present for a particle of `charge=2`, `mass=0`, and `radius=0` at point `[0,0]`.

Page last modified on Thursday 10 of July, 2014 [09:18:13 UTC].
The original document is available at http://doc.cinderella.de/tiki-index.php?page=Interaction%20with%20CindyLab