bulc_set_evac_model
Configure evacuation simulation models for building safety analysis. Set parameters for CollisionFreeSpeed, SocialForce, or GeneralizedCentrifugal models to simulate pedestrian movement during emergencies.
Instructions
Set the evacuation simulation model type and parameters. Supports CollisionFreeSpeed, SocialForce, and GeneralizedCentrifugal models.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model type: 'CollisionFreeSpeed', 'SocialForce', 'GeneralizedCentrifugal'. Default: CollisionFreeSpeed | |
| simulationTime | No | Maximum simulation time in seconds. Default: 300 | |
| timeStep | No | Simulation time step in seconds. Default: 0.1 | |
| strengthNeighborRepulsion | No | Neighbor repulsion strength (CollisionFreeSpeed). Default: 8.0 | |
| rangeNeighborRepulsion | No | Neighbor repulsion range in meters (CollisionFreeSpeed). Default: 0.1 | |
| bodyForce | No | Body force constant (SocialForce). Default: 120000 | |
| friction | No | Friction coefficient (SocialForce). Default: 240000 |
Implementation Reference
- src/tools/evac.ts:48-93 (registration)Tool registration in evacTools array, defining name, description, input schema, and annotations for the bulc_set_evac_model tool.{ name: "bulc_set_evac_model", description: "Set the evacuation simulation model type and parameters. " + "Supports CollisionFreeSpeed, SocialForce, and GeneralizedCentrifugal models.", inputSchema: { type: "object" as const, properties: { model: { type: "string", description: "Model type: 'CollisionFreeSpeed', 'SocialForce', 'GeneralizedCentrifugal'. Default: CollisionFreeSpeed", enum: ["CollisionFreeSpeed", "SocialForce", "GeneralizedCentrifugal"], }, simulationTime: { type: "number", description: "Maximum simulation time in seconds. Default: 300", }, timeStep: { type: "number", description: "Simulation time step in seconds. Default: 0.1", }, // CollisionFreeSpeed params strengthNeighborRepulsion: { type: "number", description: "Neighbor repulsion strength (CollisionFreeSpeed). Default: 8.0", }, rangeNeighborRepulsion: { type: "number", description: "Neighbor repulsion range in meters (CollisionFreeSpeed). Default: 0.1", }, // SocialForce params bodyForce: { type: "number", description: "Body force constant (SocialForce). Default: 120000", }, friction: { type: "number", description: "Friction coefficient (SocialForce). Default: 240000", }, }, }, annotations: { readOnlyHint: false, destructiveHint: true, }, },
- src/tools/evac.ts:738-746 (schema)Zod validation schema (SetEvacModelSchema) used in the handler to parse and validate input arguments for bulc_set_evac_model.const SetEvacModelSchema = z.object({ model: z.enum(["CollisionFreeSpeed", "SocialForce", "GeneralizedCentrifugal"]).optional(), simulationTime: z.number().positive().optional(), timeStep: z.number().positive().optional(), strengthNeighborRepulsion: z.number().optional(), rangeNeighborRepulsion: z.number().optional(), bodyForce: z.number().optional(), friction: z.number().optional(), });
- src/tools/evac.ts:901-907 (handler)Handler logic within handleEvacTool switch statement: validates input using SetEvacModelSchema and forwards 'set_evac_model' action to BulcClient.case "bulc_set_evac_model": { const validated = SetEvacModelSchema.parse(args); result = await client.sendCommand({ action: "set_evac_model", params: validated, }); break;