firemodels / fds

Fire Dynamics Simulator
https://pages.nist.gov/fds-smv/
Other
664 stars 624 forks source link

door algorythm does not work #7619

Closed bhoepperger closed 2 years ago

bhoepperger commented 5 years ago

When I'm running the entire case with smoke and evacuation the doors will open. Setting the case with MC_MODE=.FALSE. the evacuation simulation does not open doors. I reduced the case to the minimum and does not work. Someone an idea why FDS+Evac is working and evac sim standalone not?

&DOOR ID='Train1_door1_out' XB=4.0,5.4,-3.0,-3.0,2.4,2.8 XYZ=4.7,-2.9,2.6 TO_NODE='Train1_door1_in' IOR=-2 EXIT_SIGN=.TRUE. TIME_OPEN=5 LOCKED_WHEN_CLOSED=.TRUE. TARGET_WHEN_CLOSED=.TRUE. KEEP_XY=.TRUE. / &DOOR ID='Train1_door1_in' XB=4.0,5.4,-3.2,-3.2,2.4,2.8 XYZ=4.7,-3.5,2.6 TO_NODE='Train1_door1_out' IOR=+2 EXIT_SIGN=.FALSE. TIME_OPEN=5 LOCKED_WHEN_CLOSED=.TRUE. TARGET_WHEN_CLOSED=.TRUE. KEEP_XY=.TRUE. /

rmcdermo commented 5 years ago

@tkorhon1 Hi Timo, please have a look when you get time. Thanks.

tkorhon1 commented 5 years ago

Well, I did not test your case, because you have just the evacuation input file, no fire one. But I did a simple verification case (the door algorithm verification case). I modified it a little bit. Now I check also the MC mode that it is using smoke information. DoorAlgo_C.txt DoorAlgo_C_MC.txt

These are working as they should. Check yourself:

1) run the DoorAlgo_C.txt and see the results. You can see, that the agents are changing their target doors due to smoke. Note: choose ellipsoid, disk, or human_altered_with_data avatar in shte Smokeview menus and also color humans by HUMAN_COLOR. The avatars are then colored by the current target door color.

2) copy the DoorAlgo_C_evac.fed => DoorAlgo_C_MC_evac.fed copy the DoorAlgo_C_evac.eff => DoorAlgo_C_MC_evac.eff and run DoorAlgo_C_MC.fds

3) See the DoorAlto_C_MC.fds results. The agents change target doors as in the case 1)

So, it seems that things are working as they should. So, recheck your simulations. Read the CHID_evac.out files, there are things like:

FDS+Evac Evacuation Module FDS+Evac Version : 2.5.2

FDS+Evac Color_Method : 4 FDS+Evac Vis_Door_Crit : 3000.00000000 m FDS+Evac: FED activity level is light work FDS+Evac Random seed is not used. FDS+Evac: Soot mass extinction coeff is used: 8700.00 FDS+Evac Number of evacuation devices in the FED file: 0 FDS+Evac FED File: DoorAlgo_C_MC_evac.fed is used FDS+Evac EFF File: DoorAlgo_C_MC_evac.eff is read in and used

So, see if you find " FDS+Evac FED File: DoorAlgo_C_MC_evac.fed is used" type information in your case. It might be that the "FED file" was not read in correctly.

TimoK

bhoepperger commented 5 years ago

The two examples does not include a Door to Door solution. I have a door to door selection between two meshes and when I run the case in MC_MODE=.FALSE. the door to door selection is working well but in MC_MODE=.TRUE. the door to door does not work. When I use the same file with FDS 6.0.1 and MC_MODE=.TRUE. all agent can pass the doors. So what was changed between 6.0.1 and 6.7.1?

re Bernhard

bhoepperger commented 5 years ago

This is a very easy testcase but not working??

bhoepperger commented 5 years ago

TestCase.zip

tkorhon1 commented 5 years ago

I just downloaded your test case.

tkorhon1 commented 5 years ago

Yes, I see the point. It seems, that the door/exit open and close stuff does not work anymore. I will check this as soon as I can. I'll be on holiday next week.

TimoK

tkorhon1 commented 5 years ago

Hi!

A work-around for you: Run the fire+evacuation calculation using latest fds version 6.7.1 (or is 6.7.2 there already). This way you get CHID_evac.fed file. Use this FED file with fds 6.7.0 that you run in the EVACUATION_MC_MODE=.TRUE. on the MISC namelist. Or do the whole simulation using 6.7.0, if the fire part is ok for you with version 6.7.0.

I'm back at the office and now I did some tests. This thing has been broken between fds 6.7.0 and 6.7.1, i.e., things are still working in 6.7.0. I also noticed, that the TIME_CLOSE alone seems to be working in 6.7.1. I have a HUT library validation case (see the FDS+Evac manual) that closes some exits at time 30s. And I rerun these using the latest source code in GitHub and still get good results. So, I was not noticing this bug with my V&V cases. My verification case suite is not too good. It does not test all possible things that is implemented. I used to test things when I programmed the source code, but I did not make a verification input file that I should rerun always with the latest fds version. Presently, I will make such cases, but presently I am not doing much new features to FDS+Evac.

For my notes: There has been something taken away from the dump.f90. There has been some reorganization of the MPI parallel processing stuff and things have been moved around. At this point, some evacuation stuff in dump.f90 has been lost.

Smokey (~/FDS_Source_Latest): grep IMODE FDS_671_release/dump.f90 Smokey (~/FDS_Source_Latest):

Smokey (~/FDS_Source_Latest): grep IMODE FDS_670_release/dump.f90 IF (EVAC_DOORS(N)%IMODE>0 .AND. EVAC_DOORS(N)%IMESH==NM) THEN EVAC_DOORS(N)%IMODE=-EVAC_DOORS(N)%IMODE ! +: change status, -: has already changed status I_STATE=ABS(EVAC_DOORS(N)%IMODE)-1 IF (EVAC_EXITS(N)%IMODE>0 .AND. EVAC_EXITS(N)%IMESH==NM) THEN EVAC_EXITS(N)%IMODE=-EVAC_EXITS(N)%IMODE ! +: change status, -: has already changed status I_STATE=ABS(EVAC_EXITS(N)%IMODE)-1 IF (EVAC_ENTRYS(N)%IMODE>0 .AND. EVAC_ENTRYS(N)%IMESH==NM) THEN EVAC_ENTRYS(N)%IMODE=-EVAC_ENTRYS(N)%IMODE ! +: change status, -: has already changed status I_STATE=ABS(EVAC_ENTRYS(N)%IMODE)-1 So, the bug fix is easy. I just find the correct place to put the above missing lines in dump.f90. Time for that I have at the end of this week. (And I should make door close/open verification case also that I always check.)

TimoK

tkorhon1 commented 5 years ago

I found the bug. I'll change it to the source code and put it in the GitHub soon. So, it will be in the next fds release (fds 6.7.3 or 6.8.0 or 7.0.0 whatever is the next one).

A workaround: Use two or more MPI procesesses, then it works. But this means that you should have at least one fire mesh. So, I did a dummy fire mesh like:

&MESH IJK=4,4,4, XB=0, 1, 0.0, 1.0, 0, 1,/ dummy fire mesh

&MESH IJK=50,10,1, XB=0, 10, 0.0, 2.0, 2.4, 2.8, EVACUATION=.TRUE., EVAC_HUMANS=.TRUE., ID='Evac_Train1', EVAC_Z_OFFSET=1.0 /

&MESH IJK=50,14,1, XB=0, 10, -0.2, -3.0, 2.4, 2.8, EVACUATION=.TRUE., EVAC_HUMANS=.TRUE., ID='Evac_Main', EVAC_Z_OFFSET=1.0 /

But using this, you can not do the evacuation part as EVACUATION_MC_MODE=.TRUE. but this is not a problem. You can do your EVACUATION_MC_MODE=.TRUE. cases using older fds version, where things are still working (fds 6.7.0 is not working, 6.6.0 is not working, some older should work).

TimoK

mcgratta commented 4 years ago

Is this bug resolved in the latest version of FDS?

tkorhon1 commented 4 years ago

Well, I should check this also after my summer holidays, if the one that reported this issue is not check this one. If I remember correctly, I did correct the bug and also did commit it to GitHub.

gjaeger commented 2 years ago

@tkorhon1 With PR #10089 we should/can close this issue.