...  ...  @@ 23,7 +23,7 @@ ___ 





 **Test 2**: One pedestrian moving in a corridor






Rotating the same geometry as in test 1 around the \\(z\\)axis by an arbitrary angle e.g. \\(45^\circ\\) should lead to the evacuation time of 10 s.



Rotating the same geometry as in test 1 around the $`z`$axis by an arbitrary angle e.g. $`(45^\circ)`$ should lead to the evacuation time of 10 s.






 **Test 3**: One pedestrian moving in a corridor with a desired direction




...  ...  @@ 54,9 +54,9 @@ ___ 





In this section the correct behavior of the implemented routing algorithms as well as the correct routerassignment are tested. The investigated geometry has three different exists.






 Two different groups of pedestrians are randomly distributed in the inner room, such that the first group is nearer to \\(\rm{E_1}\\) than to \\(\rm{E_2}\\). The number of pedestrians in both groups is relatively small but is equal (\\(N_{\rm{group 1}}=N_{\rm{group 2}}=10\\)). The router strategy is `local shortest`.



 One group of pedestrians (\\(N = 50\\) is randomly distributed in the inner room. The router strategy is `local shortest`.



 One group of pedestrians (\\(N = 50\\) is randomly distributed in the inner room. The router strategy is `global shortest`.



 Two different groups of pedestrians are randomly distributed in the inner room, such that the first group is nearer to $`E_1`$ than to $`E_2`$. The number of pedestrians in both groups is relatively small but is equal $`(N_{group 1}=N_{group 2}=10)`$. The router strategy is `local shortest`.



 One group of pedestrians $`(N = 50)`$ is randomly distributed in the inner room. The router strategy is `local shortest`.



 One group of pedestrians $`(N = 50)`$ is randomly distributed in the inner room. The router strategy is `global shortest`.






Expected result: The pedestrians should be able to choose between the local shortest as well as the global shortest route.




...  ...  @@ 80,7 +80,7 @@ ___ 





 **Test 10**: runtime optimization using Verlet neighbor lists or celllinked list method






This test maybe specific for forcebased models. In order to reduce the complexity of calculating interactions among \\(N\\) pedestrians from \\(\mathcal{O}(N^2)\\), several techniques can be used to keep track of the neighbors.



This test maybe specific for forcebased models. In order to reduce the complexity of calculating interactions among $`N`$ pedestrians from $`\mathcal{O}(N^2)`$, several techniques can be used to keep track of the neighbors.



<! In Fig. \ref{fig:test10} a partition of the simulation domain by means of cells is shown. >



The edge length of one cell is bigger than the cutoff radius of the interaction force.




...  ...  @@ 115,8 +115,8 @@ ___ 





 **Test 14**: Uniform distribution of initial positions






The initial distribution of the pedestrian should be uniform. In a square room (\\(100\times 100\,\\) \\(m^2\\)) 2000 pedestrians are randomly distributed. The test is repeated 1000 times.



Divide the room equidistantly in 10 regions with respect to \\(x\\) and \\(y\\) axis and count the number of pedestrians in each square.



The initial distribution of the pedestrian should be uniform. In a square room $`100\times 100\,`$ $`m^2`$ 2000 pedestrians are randomly distributed. The test is repeated 1000 times.



Divide the room equidistantly in 10 regions with respect to $`x`$ and $`y`$ axis and count the number of pedestrians in each square.



This count should be roughly the same in all squares:






```python

...  ...  @@ 137,48 +137,48 @@ px = scipy.stats.chisquare(nx)[1] 


py = scipy.stats.chisquare(ny)[1]



```






Expected result: The mean value of the 1000 pvalues of the \\(\chi^2\\)test should be around 0.5.



Expected result: The mean value of the 1000 pvalues of the $`\chi^2`$test should be around 0.5.






 **Test 15**: Runtime of the code



The purpose of this test is to make sure that the code is not getting slower! The test scenario is set up such that



the **evacuation times is larger that the execution time**. This test is ideally run in form of a nightly build.






Expected result: \\(t_{\rm{evac}}\ge t_{\rm{exec}}\\).



Expected result: $`(t_{evac}\ge t_{exec})`$.









## Validation






 **Test 1**: 1D movement with periodical boundary






The shape of the fundamental diagram (\\(\rho, v\\)) should be realistic (decreasing velocity with increasing density).



The shape of the fundamental diagram $`(\rho, v)`$ should be realistic (decreasing velocity with increasing density).






 **Test 2**: 2D unidirectional flow in corridor with periodical boundary






The shape of the fundamental diagram (\\(\rho, v\\)) should be realistic (decreasing velocity with increasing density).



The shape of the fundamental diagram $`(\rho, v)`$ should be realistic (decreasing velocity with increasing density).






 **Test 3**: Unidirectional flow in corridor with open boundary






The shape of the fundamental diagram (\\(\rho, v\\)) should be realistic (decreasing velocity with increasing density).



The shape of the fundamental diagram $`(\rho, v)`$ should be realistic (decreasing velocity with increasing density).






 **Test 4**: Unidirectional flow around a Corner






The fundamental diagram is measured in two different locations. Before the corner and after the corner.



The shape of the fundamental diagram (\\(\rho, v\\)) should be realistic (decreasing velocity with increasing density).



The shape of the fundamental diagram $`(\rho, v)`$ should be realistic (decreasing velocity with increasing density).






 **Test 5**: Flow through bottleneck






The flow \\(J = N / \Delta t\\), with \\(N\\) is the total number of participants in the run and \\(\Delta t\\) is the time interval between the first and the last pedestrian entering the bottleneck, should increase linearly with increasing width of the bottleneck.



The flow $`(J = N / \Delta t)`$, with $`N`$ is the total number of participants in the run and $`\Delta t`$ is the time interval between the first and the last pedestrian entering the bottleneck, should increase linearly with increasing width of the bottleneck.






 **Test 6**: Merging flow in Tjunction






The fundamental diagram is measured in three different locations.



Right and left of the Tjunction and after the merging of flows.






The shape of the fundamental diagram (\\(\rho, v\\)) should be realistic (decreasing velocity with increasing density).



The shape of the fundamental diagram $`(\rho, v)`$ should be realistic (decreasing velocity with increasing density).









 **Test 7**  Bidirectional flow in corridor






The shape of the fundamental diagram (\\(\rho, v\\)) should be realistic (decreasing velocity with increasing density).



The shape of the fundamental diagram $`(\rho, v)`$ should be realistic (decreasing velocity with increasing density).






[^note1]: This test should be removed after refactoring the geometryclass. There will be not `subroom` anymore. 