Open mcgratta opened 1 week ago
I still do not have a solution to this. I'm working on it.
Here is the simplest example of the problem
&HEAD CHID='tunnel_4' /
&TIME T_END=10.0/
&PRES MAX_PRESSURE_ITERATIONS =100, PRESSURE_TOLERANCE=10, VELOCITY_TOLERANCE=0.01/
&DUMP VELOCITY_ERROR_FILE=T /
&MESH IJK=20,20,20, XB=0.0,1.0,0.0,1.0,0.0,1.0, MPI_PROCESS=0 /
&MESH IJK=20,20,20, XB=1.0,2.0,0.0,1.0,0.0,1.0, MPI_PROCESS=1 /
&MESH IJK=20,20,20, XB=2.0,3.0,0.0,1.0,0.0,1.0, MPI_PROCESS=2 /
&MESH IJK=20,20,20, XB=3.0,4.0,0.0,1.0,0.0,1.0, MPI_PROCESS=3 /
&DEVC ID='Timer 1', QUANTITY='TIME', XYZ=0,0,0, SETPOINT=6., INITIAL_STATE=F /
&DEVC ID='Timer 2', QUANTITY='TIME', XYZ=0,0,0, SETPOINT=4., INITIAL_STATE=T /
&OBST XB=0.5,0.6,0.0,1.0,0.0,1.0 /
&OBST XB=1.8,1.9,0.0,1.0,0.0,1.0, DEVC_ID='Timer 1' /
&OBST XB=3.4,3.5,0.0,1.0,0.0,1.0, DEVC_ID='Timer 2' /
&VENT SURF_ID='OPEN', XB=0.0,0.0,0.0,1.0,0.0,1.0 /
&VENT SURF_ID='OPEN', XB=4.0,4.0,0.0,1.0,0.0,1.0, DYNAMIC_PRESSURE=-100.0/
&VENT ID='Louvre_node01', SURF_ID='HVAC', XB=0.5,0.5,0.2,0.8,0.2,0.8, COLOR='GREEN YELLOW' /
&VENT ID='Louvre_node02', SURF_ID='HVAC', XB=0.6,0.6,0.2,0.8,0.2,0.8, COLOR='GREEN YELLOW'/
&HVAC ID='Duct01', TYPE_ID='DUCT', AREA=0.36, PERIMETER=2.4, LOSS=0.25,0.25, NODE_ID='Node01','Node02', ROUGHNESS=1.0E-3, LENGTH=0.42/
&HVAC ID='Node02', TYPE_ID='NODE', DUCT_ID='Duct01', VENT_ID='Louvre_node02', XYZ=0.5,0.5,0.5 /
&HVAC ID='Node01', TYPE_ID='NODE', DUCT_ID='Duct01', VENT_ID='Louvre_node01', XYZ=0.6,0.5,0.5 /
&SLCF QUANTITY='PRESSURE', ID='Slice', PBY=0.5, VECTOR=T /
&SLCF QUANTITY='PRESSURE ZONE', PBY=0.5, CELL_CENTERED=T /
&DEVC QUANTITY='PRESSURE',ID='M1', XYZ=0.7,0.5,0.5 /
&DEVC QUANTITY='PRESSURE',ID='M2', XYZ=1.7,0.5,0.5 /
&DEVC QUANTITY='PRESSURE',ID='M3', XYZ=2.7,0.5,0.5 /
&DEVC QUANTITY='PRESSURE',ID='M4', XYZ=3.7,0.5,0.5 /
&TAIL /
Jason -- if you have a chance, can you look at the simple case above. If you run with 1 MPI process, there is no excessive ringing in the pressure. Run with 4 MPI processes and it rings. There must be some bad feedback loop between the HVAC vent and the pressure solver, but I cannot pin point it. The obstructions are not thin and they are not at mesh boundaries, which are the usual suspects with this kind of issue.
In the case below, if I remove the fifth mesh (an empty disconnected box that does nothing), the case works without a ringing pressure. If I leave it, I see the ringing. My first guess is that somewhere there is a call to a routine with IF (N_PROCESSES>1)
, but I cannot find it.
&TIME T_END=10.0/
&PRES MAX_PRESSURE_ITERATIONS =100, PRESSURE_TOLERANCE=10, VELOCITY_TOLERANCE=0.01/
&DUMP VELOCITY_ERROR_FILE=T /
&MESH IJK=20,20,20, XB=0.0,1.0,0.0,1.0,0.0,1.0, MPI_PROCESS=0 /
&MESH IJK=20,20,20, XB=1.0,2.0,0.0,1.0,0.0,1.0, MPI_PROCESS=0 /
&MESH IJK=20,20,20, XB=2.0,3.0,0.0,1.0,0.0,1.0, MPI_PROCESS=0 /
&MESH IJK=20,20,20, XB=3.0,4.0,0.0,1.0,0.0,1.0, MPI_PROCESS=0 /
&MESH IJK=20,20,20, XB=5.0,6.0,0.0,1.0,0.0,1.0, MPI_PROCESS=1 /
&DEVC ID='Timer 1', QUANTITY='TIME', XYZ=0,0,0, SETPOINT=6., INITIAL_STATE=F /
&DEVC ID='Timer 2', QUANTITY='TIME', XYZ=0,0,0, SETPOINT=4., INITIAL_STATE=T /
&OBST XB=0.5,0.6,0.0,1.0,0.0,1.0 /
&OBST XB=1.8,1.9,0.0,1.0,0.0,1.0, DEVC_ID='Timer 1' /
&OBST XB=3.4,3.5,0.0,1.0,0.0,1.0, DEVC_ID='Timer 2' /
&VENT SURF_ID='OPEN', XB=0.0,0.0,0.0,1.0,0.0,1.0 /
&VENT SURF_ID='OPEN', XB=4.0,4.0,0.0,1.0,0.0,1.0, DYNAMIC_PRESSURE=-100.0/
&VENT ID='Louvre_node01', SURF_ID='HVAC', XB=0.5,0.5,0.2,0.8,0.2,0.8, COLOR='GREEN YELLOW' /
&VENT ID='Louvre_node02', SURF_ID='HVAC', XB=0.6,0.6,0.2,0.8,0.2,0.8, COLOR='GREEN YELLOW'/
&HVAC ID='Duct01', TYPE_ID='DUCT', AREA=0.36, PERIMETER=2.4, LOSS=0.25,0.25, NODE_ID='Node01','Node02', ROUGHNESS=1.0E-3, LENGTH=0.42/
&HVAC ID='Node02', TYPE_ID='NODE', DUCT_ID='Duct01', VENT_ID='Louvre_node02', XYZ=0.5,0.5,0.5 /
&HVAC ID='Node01', TYPE_ID='NODE', DUCT_ID='Duct01', VENT_ID='Louvre_node01', XYZ=0.6,0.5,0.5 /
&SLCF QUANTITY='PRESSURE', ID='Slice', PBY=0.5, VECTOR=T /
&SLCF QUANTITY='PRESSURE ZONE', PBY=0.5, CELL_CENTERED=T /
&DEVC QUANTITY='PRESSURE',ID='M1', XYZ=0.7,0.5,0.5 /
&DEVC QUANTITY='PRESSURE',ID='M2', XYZ=1.7,0.5,0.5 /
&DEVC QUANTITY='PRESSURE',ID='M3', XYZ=2.7,0.5,0.5 /
&DEVC QUANTITY='PRESSURE',ID='M4', XYZ=3.7,0.5,0.5 /
&TAIL /
Just wrapped up three weeks of travel. Haven't had time to delve into this yet.
I think this has to do with pressure zones, processes, meshes, and connected zones. I think the fix should be easy, but I have to test it.
This change appears to have solved the original problem. There was a bug in the logic to indicate that two pressure zones had combined into one or split into two.
While looking into the hvac routines I found a bug in handling merging pressure zones. It didn't impact this specific case but will make a difference in cases where two merging zones each have HVAC VENTs.
i confirm the connected zones fix solves the issue
This is a great news! Thank you very much for investigating it.
If I want to test it, is this a correct version?:
FDS-6.9.1-1275-g421fce2 2024-Nov-09 09:28
https://github.com/firemodels/test_bundles/releases/tag/FDS_TEST
It will be in the next test release.
We release a new test bundle everyday, assuming that our overnight tests are successful. So check back tomorrow.
I have downloaded the test release, windows version and ran the original case.
fds_local -p 8 -o 1 test.fds
The diverging fluctuation issue is solved. Thank you!
However the compartment pressure unexpectedly goes to positive 100 Pa at 7 s, when the room door opens.
I have repeated the run with -15Pa boundary. The issue was still there, compartment pressure being 7 Pa. Would this be related the original issue or is it a separate one?
Furthermore, not an issue but an observation; When I tried to run the Linux version, I have received the error fds: /lib64/libc.so.6: version GLIBC_2.34 not found (required by fds)
. I assume this has to do with our Linux machine operating system which is too old and needs to be reinstalled with different library.
we will have to take a look. probably related in some manner.
glibc 2.34 was released in 2021. It is part of your linux distribution.
Interestingly this isnt seen in the node pressures (N1 and N2)
Does that HVAC vent allow backflow?
Yes.
If I add a pressure slice through that vent, I see this. I do not know why the pressure is not decreasing.
Something isn't right. Will have to look into it.
I tired modifying the simple tunnel_4 case to have a similar sequence of door openings and closings but didn't see any strange behavior there. If I add duct velocity to the original case it seems to be correct. Nothing in the duct until 3 s when there is a path open from the -100 Pa VENT to the louver. At 4 s the inner door closes and the HVAC vent oscailltes for a short bit trying to equailize the pressure which is initially negative on the inside. At 6 s the outer door closes and a 7 s the inner door opens, but during this time HVAC flows are near zero. No where near enough to cause that jump in pressure.
There seems to be a disconnect between "zone pressures" and perturbation pressures. You can see the zone pressures in the _hrr.csv file. I don't understand why zone 2 (the larger zone) does not return to ambient. The other potential problem is the fact that we choose an "equilibrium" pressure when zones break to be based on the lowest grid cell in z.
Question -- why does the node pressure at the HVAC vent not reflect the gas pressure just inside the larger zone?
Discussed in https://github.com/firemodels/fds/discussions/13629