== Agent Parameters == [[TracNav(doc/app/partoc|nocollapse)]] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ '''NAMELIST group name: {{{agents_par}}}''' ||='''Parameter Name''' =||='''[../fortrantypes FORTRAN Type]''' =||='''Default Value''' =||='''Explanation''' =|| |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#a_rand_target '''a_rand_target'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" L(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * .F. }}} {{{#!td Flag for agents within a group to have random targets outside of model domain.\\\\ One logical value per agent [#number_of_agent_groups group]. If .T., each agent in that group will have a random target just outside the model domain. Otherwise a target (see [#at_x at_x]/[#at_y at_y]) must be set manually for each agent group. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#adx '''adx'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td Distance along x between agents within an agent source (in m).\\\\ Each agent source is defined as an area from x = [#asl asl] to [#asr asr] and y = [#ass ass] to [#asn asn]. The first agent is released at x = asl; y = ass. More agents are released at x = asl + N * '''adx''' (x <= asr) and y = ass + N * ady (y <= asn), forming a raster.\\\\ To add a random element to these release points, see [#random_start_position_agents random_start_position_agents]. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#ady '''ady'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td Distance along y between agents within an agent source (in m). }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#agent_maximum_age '''agent_maximum_age'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td Maximum time an agent can spend in the simulation before it is deleted. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#agent_time_unlimited '''agent_time_unlimited'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" L }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" .F. }}} {{{#!td Flag to determine number of unlimited dimensions in NetCDF output file.\\\\ In the agent NetCDF output file only the number of agents is an unlimited dimension by default. Contrarily, the time dimension is estimated as having a size of 1.2 * [/wiki/doc/app/d3par#end_time end_time] / [#dt_write_agent_data dt_write_agent_data] by default. If this flag is set to .T., both dimensions are set as unlimited. This requires NetCDF4, HDF5 and results in a much larger output file. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#alloc_factor_mas '''alloc_factor_mas'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 20.0 }}} {{{#!td Factor (in percent) describing the memory allocated additionally to the memory needed for initial agents at a given grid cell.\\\\ Implementation is the same as [/wiki/doc/app/parpar#alloc_factor alloc_factor]. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#asl '''asl'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td Left border of agent source(s) (in m).\\\\ Check [#adx adx] for information of agent sources. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#asn '''asn'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td North border of agent source(s) (in m).\\\\ Check [#adx adx] for information of agent sources. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#asr '''asr'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td Right border of agent source(s) (in m).\\\\ Check [#adx adx] for information of agent sources. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#ass '''ass'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td South border of agent source(s) (in m).\\\\ Check [#adx adx] for information of agent sources. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#at_x '''at_x'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td x-coordinate of agent group target (in m).\\\\ Each agent in a group will navigate through building topography toward the corresponding target with x = '''at_x''' and y = at_y }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#at_y '''at_y'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R(100) }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 100 * 9999999.9 }}} {{{#!td y-coordinate of agent group target (in m).\\\\ Each agent in a group will navigate through building topography toward the corresponding target with x = at_x and y = '''at_y''' }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#bc_mas_lr '''bc_mas_lr'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" C*15 }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 'absorb' }}} {{{#!td Boundary condition for agents at the left and right model boundary.\\\\ By default, agents are deleted when they leave the model domain ('''bc_mas_lr''' = '' 'absorb' '').\\ Cyclic lateral boundary conditions can be introduced by setting bc_mas_lr = '' 'cyclic' ''. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#bc_mas_ns '''bc_mas_ns'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" C*15 }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 'absorb' }}} {{{#!td Boundary condition for agents at the north and south model boundary.\\\\ By default, agents are deleted when they leave the model domain ('''bc_mas_ns''' = '' 'absorb' '').\\ Cyclic lateral boundary conditions can be introduced by setting bc_mas_ns = '' 'cyclic' ''. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#coll_t_0 '''coll_t_0'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 3.0 }}} {{{#!td Range of unscreened interactions for social force model (in s).\\\\ Collision avoidance of pedestrians is implemented according to the approach of [http://motion.cs.umn.edu/PowerLaw/ Karamouzas et al. (2014)]. This parameter implies a maximum range that pedestrians consider for collision avoidance, i.e., potential collisions that will occur more than '''coll_t_0''' in the future are largely ignored.\\\\ '''NOTE''': This parameter should generally not be changed. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#corner_gate_start '''corner_gate_start'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 0.5 }}} {{{#!td Distance of navigation gate starting point to obstacle corner (in m).\\\\ Convex obstacle corners are used for agents to navigate towards their target (see [#at_x at_x]/[#at_y at_y]). In order to avoid collisions with these obstacles, the navigation points do not coincide exactly with the obstacle corners but are shifted outward along the bisector of the corner. The navigation point for each agent at a given corner is chosen randomly along a line following the corner bisector starting at '''corner_gate_start''' outward from the corner and ending at corner_gate_start + [#corner_gate_width corner_gate_width] outward from the corner, forming a 'gate' at each obstacle corner through which agents can pass. This gate helps to avoid clustering of agents moving in different directions at corner navigation points. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#corner_gate_width '''corner_gate_width'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 1.0 }}} {{{#!td Width of navigation gate at obstacle corners (in m).\\\\ See [#corner_gate_start corner_gate_start] for details. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#deallocate_memory_mas '''deallocate_memory_mas'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" L }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" .T. }}} {{{#!td Parameter to enable deallocation of unused memory.\\\\ If the number of agents in a grid box exceeds the allocated memory, new memory is allocated. However, if the number of agents per grid box is only temporarily high, most of the memory will be unused later. If deallocate_memory = .T., the allocated memory used for agents will be dynamically adjusted with respect to the current number of agents every [#step_dealloc_mas step_dealloc_mas]'th timestep. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#dist_to_int_target '''dist_to_int_target'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 0.25 }}} {{{#!td Distance (in m) at which an intermittent target counts as reached.\\\\ Each agent in an agent group navigates toward that groups target ([#at_x at_x]/[#at_y at_y]). To do this a preprocessed navigation mesh (visibility graph) is searched via the A*-algorithm for the most efficient path toward the target. The agent successively navigates toward a number of intermittent targets along the calculated path, each such target providing the direction of the driving force until it is reached. Each intermittent target counts as reached as soon as the distance between it and the current agent position is smaller than '''dist_to_int_target'''. Then, the next intermittent target along the path is chosen.\\\\ NOTE: This parameter should be chosen in a way that insures that the next intermittent target is visible to the agent once the current one is reached. If not, agents could get stuck at obstacle corners. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#dt_agent '''dt_agent'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 0.02 }}} {{{#!td Agent timestep (in seconds).\\\\ The MAS performs a number of subtimesteps usually much smaller than the model timestep until all agents have reached the model timestep. The value of this parameter should not exceed 0.02 s, as above that, the agents' local interaction will become unstable. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#dt_arel '''dt_arel'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 9999999.9 }}} {{{#!td Interval in which agents are released at their respective sources (in s).\\\\ Every dt_arel seconds, agents are released at their sources as defined by [#asl asl], [#asr asr], [#adx adx], [#ass ass], [#asn asn] and [#ady ady]. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#dt_write_agent_data '''dt_write_agent_data'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 9999999.9 }}} {{{#!td Output interval for agent NetCDF output (in s).\\\\ Note: To animate the results of an agent simulation in real-time speed, '''dt_write_agent_data''' = 0.04 is recommended. Note: While prognostic quantities are output at every output step, this data will not change between two PALM timesteps, as no new values have been calculated yet. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#end_time_arel '''end_time_arel'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 9999999.9 }}} {{{#!td Simulation time at which the release of agent is stopped (in s).\\\\ From this time on no more agents are released from the sources as defined by [#asl asl], [#asr asr], [#adx adx], [#ass ass], [#asn asn] and [#ady ady]. There may still be agents left in the simulation until the last agent has reached [#agent_maximum_age agent_maximum_age] and is deleted or until all agents have left the model domain or reached their targets. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#max_dist_from_path '''max_dist_from_path'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 1.0 }}} {{{#!td Agent distance from current path section that triggers recalculation of that agent's path (in m).\\\\ An agent's path to its target consists of a number of intermittent targets. If an agents deviates further from its current path section (the line between its last and its current intermittent target) than '''max_dist_from_path''', a recalculation of the path to its target is triggered. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#min_nr_agent '''min_nr_agent'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" I }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 2 }}} {{{#!td Minimum number of agents for which memory is allocated at every grid cell.\\ }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#multi_agent_system_start '''multi_agent_system_start'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 0.0 }}} {{{#!td Simulation time at which the multi agent system will start excuting (in s). }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#number_of_agent_groups '''number_of_agent_groups'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" I }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 1 }}} {{{#!td Number of agent groups.\\\\ Sources ( [#asl asl], [#asr asr], [#adx adx], [#ass ass], [#asn asn] and [#ady ady]) and targets ([#at_x at_x]/[#at_y at_y]) should be defined for each group individually. A maximum of 100 groups are allowed. \\ Note: [#dt_arel dt_arel] is the same for all groups. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#radius_agent '''radius_agent'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 0.25 }}} {{{#!td Quasi-solid core of agents.\\\\ If agents collide, (distance of their centers smaller than 2*'''radius_agent''') the standard social force model according to [https://doi.org/10.1103/PhysRevE.51.4282 Helbing] (1995) is used to calculate their repulsive forces on each other. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#random_start_position_agents '''random_start_position_agents'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" L }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" .T. }}} {{{#!td Initial position of the particles is varied randomly within certain limits. \\\\ By default, the initial positions of agents within the source exactly correspond with the positions given by [#asl asl], [#asr asr], [#asn asn], [#ass ass], [#adx adx] and [#ady ady]. With '''random_start_position_agents''' = ''.T.'' the initial positions of the agents are allowed to randomly vary from these positions within certain limits. \\\\ '''Very important:''' In case of '''random_start_position''' = ''.T.'', the random-number generators on the individual PEs no longer run synchronously. If random disturbances are applied to the velocity field (see [../d3par#create_disturbances create_disturbances]), then as a consequence for parallel runs the realizations of the turbulent flow fields will deviate between runs which used different numbers of PEs! }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#read_agents_from_restartfile '''read_agents_from_restartfile'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" L }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" .F. }}} {{{#!td Flag to read agent data from restart file.\\\\ Currently no function, as restart runs with agents are not yet implemented. Will follow. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#repuls_agent '''repuls_agent'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 1.5 }}} {{{#!td Magnitude of the repulsive force agents exert on each other (in m2 s-2).\\\\ }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#repuls_wall '''repuls_wall'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 7.0 }}} {{{#!td Magnitude of the repulsive force obstacles exert on agents (in m2 s-2).\\\\ }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#scan_radius_agent '''scan_radius_agent'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" R }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" 3.0 }}} {{{#!td Radius around the agent in which it scans for obstacles (in m).\\\\ Based on '''scan_radius_agent''', each agent at each subtimestep determines a number of gridboxes around it and scans them for obstacles (topography and other agents). It will interact only with obstacles in that radius. The limiting factor is the grid spacing, because at subdomain boundaries only a maximum of three grid boxes can be scanned. }}} |---------------- {{{#!td style="vertical-align:top; text-align:left;width: 150px" [=#PARAMETER '''PARAMETER'''] }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 50px" DATA TYPE }}} {{{#!td style="vertical-align:top; text-align:left;style="width: 75px" DEFAULT VALUE }}} {{{#!td EXPLANATION }}}