diff --git a/demos/scenario_22_clogging/clogging_geo_nod.xml b/demos/scenario_22_clogging/clogging_geo_nod.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3971af7791df075d3ce5b38f319e7964b9a71289
--- /dev/null
+++ b/demos/scenario_22_clogging/clogging_geo_nod.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<geometry version="0.8" caption="Projectname" gridSizeX="20.000000"
+	  gridSizeY="20.000000" unit="m"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:noNamespaceSchemaLocation="http://134.94.2.137/jps_geoemtry.xsd ">
+	<rooms>
+		<room id="0" closed="0" zpos="0.0">
+			<subroom id="0" closed="0" class="subroom">
+				<polygon caption="SourceLeft">
+					<vertex px="0.0" py="8.0"/>
+					<vertex px="-8.0" py="8.0"/>
+				</polygon>
+				<polygon caption="SourceRight">
+					<vertex px="-8.0" py="0.0"/>
+					<vertex px="0.0" py="0.0"/>
+				</polygon>
+			</subroom>
+		</room>
+		<room id="1" closed="0" zpos="0.0">
+			<subroom id="0" closed="0" class="subroom">
+				<polygon caption="MainRoomLeftWall">
+					<vertex px="0.0" py="8.0"/>
+					<vertex px="10.0" py="8.0"/>
+					<vertex px="10.0" py="4.5"/>
+				</polygon>
+				<polygon caption="MainRoomRightWall">
+					<vertex px="0.0" py="0.0"/>
+					<vertex px="10.0" py="0.0"/>
+					<vertex px="10.0" py="3.5"/>
+				</polygon>
+			</subroom>
+		</room>	
+		<room id="2" closed="0" zpos="0.0">
+			<subroom id="0" closed="0" class="subroom">
+				<polygon caption="CorridorLeftWall">
+					<vertex px="10.0" py="3.5"/>
+					<vertex px="12.0" py="3.5"/>
+				</polygon>
+				<polygon capton="CorridorRightWall">
+					<vertex px="10.0" py="4.5"/>
+					<vertex px="12.0" py="4.5"/>
+				</polygon>
+			</subroom>
+		</room>	
+		<room id="3" closed="0" zpos="0.0">
+			<subroom id="0" closed="0" class="subroom">
+				<polygon caption="Waiting_area">
+					<vertex px="-8.0" py="8.0"/>
+					<vertex px="-26.0" py="8.0"/>
+					<vertex px="-26.0" py="0.0"/>
+					<vertex px="-8.0" py="0.0"/>
+				</polygon>
+			</subroom>
+		</room>
+	</rooms>
+	<transitions>
+		<transition id="0" type="emergency"
+			room1_id="0" subroom1_id="0" room2_id="1" 
+			subroom2_id="0">
+			<vertex px="0" py="0"/>
+			<vertex px="0" py="8"/>
+		</transition>
+		<transition id="1" type="emergency"
+			room1_id="1" subroom1_id="0" room2_id="2" 
+			subroom2_id="0">
+			<vertex px="10" py="3.5"/>
+			<vertex px="10" py="4.5"/>
+		</transition>
+		<transition id="2" type="emergency"
+			room1_id="2" subroom1_id="0" room2_id="-1" 
+			subroom2_id="-1">
+			<vertex px="12" py="3.5"/>
+			<vertex px="12" py="4.5"/>
+		</transition>
+		<transition id="3" type="emergency"
+			room1_id="0" subroom1_id="0" room2_id="3" 
+			subroom2_id="0">
+			<vertex px="-8" py="0"/>
+			<vertex px="-8" py="8"/>
+		</transition>
+		
+	</transitions>
+</geometry>
diff --git a/demos/scenario_22_clogging/clogging_ini.xml b/demos/scenario_22_clogging/clogging_ini.xml
index d00b494b2359c96eb81cdec59e16db27e37bfa8b..d2dfee9f64b136e66e9675ddb9c41a348a3f1d80 100644
--- a/demos/scenario_22_clogging/clogging_ini.xml
+++ b/demos/scenario_22_clogging/clogging_ini.xml
@@ -4,13 +4,13 @@
   <num_threads>8</num_threads>
   <max_sim_time unit="sec">500</max_sim_time>
   <logfile>log.txt</logfile>
-  <geometry>clogging_geo.xml</geometry>
+  <geometry>clogging_geo_nod.xml</geometry>
   
   <trajectories embed_mesh="false" format="xml-plain" fps="20">
     <file location="clogging_traj.xml" />
   </trajectories>
   
-  <show_statistics>false</show_statistics>
+  <show_statistics>true</show_statistics>
   
   <agents operational_model_id="7">
     <agents_distribution>
@@ -42,10 +42,10 @@
         <force_wall D="0.05" a="6" />
 		<time_parameters Td="0.3" Ts="0.3" />
 		<update_method parallel="1"/> <!-- Update method is parallel when parallel=1, while unparallel when parallel=0 -->
-		<waiting_time Tw="0"/> <!-- Deleting pedestrian Tw seconds after the clogging -->
-		<clogging_area size="0.6" /> <!-- Only deleting pedestrian when the distance between clogging to exit is smaller than the size-->
+		<waiting_time Tw="1"/> <!-- Deleting pedestrian Tw seconds after the clogging -->
+		<clogging_area size="1" /> <!-- Only deleting pedestrian when the distance between clogging to exit is smaller than the size-->
 		<model_submodel direction="1" speed="1"/> <!-- When direction=1 means using direction part, when speed=1 means using speed part -->
-		<GCVM using="0"/> <!-- When using=1 menas we using GCVM in the simulation -->
+		<GCVM using="1"/> <!-- When using=1 menas we using GCVM in the simulation -->
       </model_parameters>
 	  <agent_parameters agent_parameter_id="1">
         <v0 mu="1.34" sigma="0.26" />
diff --git a/math/SimplestModel.cpp b/math/SimplestModel.cpp
index 6d708107b81bc9e733ec70d666f6079a3447a231..bba552ad53c815a8e0189dee851ef627dc9436d6 100644
--- a/math/SimplestModel.cpp
+++ b/math/SimplestModel.cpp
@@ -448,7 +448,7 @@ void SimplestModel::ComputeNextTimeStep(double current, double deltaT, Building*
 		if (converse != relations.end())
 		{
 			//using this when delete pedestrian
-			//*converse = ID_pair(first_ID, second_ID);
+			*converse = ID_pair(first_ID, second_ID);
 		}
 		for (int p = start; p <= end; ++p) {
 			Pedestrian* ped = allPeds[p];
@@ -460,10 +460,37 @@ void SimplestModel::ComputeNextTimeStep(double current, double deltaT, Building*
 				}
 				else {
 					ped->SetInCloggingTime(0);
+					clogging_times++;
+					std::ofstream ofile;
+					string ProjectFileName = building->GetProjectFilename();
+					int start= ProjectFileName.find_last_of("\\");
+					start = start == -1 ? ProjectFileName.find_last_of("/") : start;
+					int end = ProjectFileName.find(".xml");
+					string InifileName = ProjectFileName.substr(start+1,end-start-1);
+					if (clogging_times == 1) {
+						ofile.open(building->GetProjectRootDir() + "CloggingLog_"+InifileName+".txt", std::ofstream::trunc);
+						ofile <<"#inifile: "<< building->GetProjectFilename()<<"\n";
+						ofile << "#Commit date: " << GIT_COMMIT_DATE << "\n";
+						ofile << "#Branch: " << GIT_BRANCH << "\n";
+						ofile << "#Timestep: " << deltaT << " (s)\n";
+						ofile << "#Waiting time: " << _WaitingTime << " (s)\n";
+						ofile << "#Parallel: " << _Parallel << " (1:parallel,0:unparallel)\n";
+						ofile << "#Direction: " << _SubmodelDirection << " (1:Using direction submodel,0:Not using direction submodel)\n";
+						ofile << "#Speed: " << _SubmodelSpeed << " (1:Using speed submodel,0:Not using speed submodel)\n";
+						ofile << "#GCVM: " << _GCVMUsing << " (1:Using GCVM instead of simplest model,0:Using simplest model)\n";
+						ofile << "#ID\ttime(s)\tamount\tposition_x\tpostion_y\n";
+					}
+					else {
+						ofile.open(building->GetProjectRootDir() + "CloggingLog_" + InifileName+".txt", std::ofstream::app);
+					}
+					//ofile << "\nDELETE: \tPed " << ped->GetID() << " is deleted at time " << current << " to slove clogging, clogging times: " << clogging_times << " !\n";
+					ofile  << ped->GetID() << "\t" << current << "\t" << clogging_times << "\t" << ped->GetPos()._x << "\t" << ped->GetPos()._y << "\n";
+					ofile.close();
+					/*
+					// Todo: Cooperation-----------------------------------------------------------
 					double velocity_x=ped->GetEllipse().GetCosPhi();
 					double velocity_y=ped->GetEllipse().GetSinPhi();
 					Point position=ped->GetPos();
-					
 					int random = rand() % 10000;
 					if (random<2500)
 					{
@@ -489,36 +516,16 @@ void SimplestModel::ComputeNextTimeStep(double current, double deltaT, Building*
 						Point velocity(velocity_y,velocity_x);
 						ped->SetPos(position+velocity*-1.34*deltaT);
 					}
-					
+					//---------------------------------------------------------------------------
+					*/
 					// Clogging experiment
+					// Delete
 					//pedsToRemove.push_back(ped);
-
-					clogging_times++;
-					std::ofstream ofile;
-					string ProjectFileName = building->GetProjectFilename();
-					int start= ProjectFileName.find_last_of("\\");
-					start = start == -1 ? ProjectFileName.find_last_of("/") : start;
-					int end = ProjectFileName.find(".xml");
-					string InifileName = ProjectFileName.substr(start+1,end-start-1);
-					if (clogging_times == 1) {
-						ofile.open(building->GetProjectRootDir() + "CloggingLog_"+InifileName+".txt", std::ofstream::trunc);
-						ofile <<"#inifile: "<< building->GetProjectFilename()<<"\n";
-						ofile << "#Commit date: " << GIT_COMMIT_DATE << "\n";
-						ofile << "#Branch: " << GIT_BRANCH << "\n";
-						ofile << "#Timestep: " << deltaT << " (s)\n";
-						ofile << "#Waiting time: " << _WaitingTime << " (s)\n";
-						ofile << "#Parallel: " << _Parallel << " (1:parallel,0:unparallel)\n";
-						ofile << "#Direction: " << _SubmodelDirection << " (1:Using direction submodel,0:Not using direction submodel)\n";
-						ofile << "#Speed: " << _SubmodelSpeed << " (1:Using speed submodel,0:Not using speed submodel)\n";
-						ofile << "#GCVM: " << _GCVMUsing << " (1:Using GCVM instead of simplest model,0:Using simplest model)\n";
-						ofile << "#ID\ttime(s)\tamount\tposition_x\tpostion_y\n";
-					}
-					else {
-						ofile.open(building->GetProjectRootDir() + "CloggingLog_" + InifileName+".txt", std::ofstream::app);
-					}
-					//ofile << "\nDELETE: \tPed " << ped->GetID() << " is deleted at time " << current << " to slove clogging, clogging times: " << clogging_times << " !\n";
-					ofile  << ped->GetID() << "\t" << current << "\t" << clogging_times << "\t" << ped->GetPos()._x << "\t" << ped->GetPos()._y << "\n";
-					ofile.close();
+					// Moving to waiting area
+					Point position=ped->GetPos();
+					Point position_w(position._x-18,position._y);
+					ped->SetPos(position_w,true);
+					ped->SetmoveManually(true);
 					//Log->Write("\nDELETE: \tPed (ID %d) is deleted to slove clogging, Clogging times = %d !", ped->GetID(), clogging_times);
 					break;
 
diff --git a/pedestrian/Pedestrian.cpp b/pedestrian/Pedestrian.cpp
index 5fc40d65f8f392e240d74bcd58d19b49c09e016f..6884a0e93f1529a7396f1f3072e682fd78ca1a89 100644
--- a/pedestrian/Pedestrian.cpp
+++ b/pedestrian/Pedestrian.cpp
@@ -1226,6 +1226,28 @@ bool Pedestrian::Relocate(std::function<void(const Pedestrian&)> flowupdater) {
      {
           auto& room = it_room.second;
           auto subrooms = room->GetAllSubRooms();
+
+          // This part is used for move pedestrian in geometry manually
+          if (GetmoveManually()==true){
+               auto sub_in =
+                  std::find_if(subrooms.begin(), subrooms.end(), [&] (std::pair<int, std::shared_ptr<SubRoom>> iterator) {
+                      return (iterator.second->IsInSubRoom(this));
+                  }); 
+               if (sub_in!=subrooms.end()){
+                    ClearMentalMap(); // reset the destination
+                    SetRoomID(room->GetID(), room->GetCaption());
+                    SetSubRoomID(sub_in->second->GetSubRoomID());
+                    SetSubRoomUID(sub_in->second->GetUID());
+                    _router->FindExit(this);
+                    status=true;
+                    SetmoveManually(false);
+                    break;
+               }else{
+                    continue;
+               }
+
+          }
+          
           map<int, std::shared_ptr<SubRoom> >::iterator sub =
                   std::find_if(subrooms.begin(), subrooms.end(), [&] (std::pair<int, std::shared_ptr<SubRoom>> iterator) {
                       return ((iterator.second->IsDirectlyConnectedWith(allRooms[_roomID]->GetSubRoom(_subRoomID))) && iterator.second->IsInSubRoom(this));
@@ -1279,3 +1301,11 @@ void Pedestrian::SetInCloggingTime(double t) {
 double Pedestrian::GetInCloggingTime() const {
 	return _InCloggingTime;
 }
+
+void Pedestrian::SetmoveManually(bool m){
+     _moveManually = m;
+}
+
+bool Pedestrian::GetmoveManually() const{
+     return _moveManually;
+}
diff --git a/pedestrian/Pedestrian.h b/pedestrian/Pedestrian.h
index 7d74d60129533d7ffa369b286729c818eab5e596..f4d7ba0097408152c1af9024150c3125d07fce03 100644
--- a/pedestrian/Pedestrian.h
+++ b/pedestrian/Pedestrian.h
@@ -154,7 +154,9 @@ private:
 
      int _lastGoalID = -1;
      bool _insideGoal =false;
-	 double _InCloggingTime = 0;
+	double _InCloggingTime = 0;
+
+     bool _moveManually = false;
 
 
 public:
@@ -510,9 +512,13 @@ public:
      bool IsInsideGoal() const;
 
 
-	 void SetInCloggingTime(double t);
+	void SetInCloggingTime(double t);
+
+	double GetInCloggingTime() const;
 
-	 double GetInCloggingTime() const;
+     void SetmoveManually(bool m);
+     
+     bool GetmoveManually() const;
 };
 
 #endif  /* _PEDESTRIAN_H */