more neighbor work
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				studiorailgun/Renderer/pipeline/head There was a failure building this commit
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	studiorailgun/Renderer/pipeline/head There was a failure building this commit
				
			This commit is contained in:
		
							parent
							
								
									ec5a9b3a65
								
							
						
					
					
						commit
						a44d04ed6c
					
				| @ -10,19 +10,22 @@ | |||||||
| /**
 | /**
 | ||||||
|  * Define as 1 to source values from surrounding chunks |  * Define as 1 to source values from surrounding chunks | ||||||
|  */ |  */ | ||||||
| #define USE_BOUNDS 0 | #define USE_BOUNDS 1 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal, float * adjacencyMatrix){ | ||||||
|     int i, j; |     int i, j; | ||||||
|     int neighborIndex; |     int neighborIndex; | ||||||
|  |     float adjacentVal; | ||||||
|     //x+ face
 |     //x+ face
 | ||||||
|     neighborIndex = CK(2,1,1); |     neighborIndex = CK(2,1,1); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / ((DIM-2)*(DIM-2)); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             for(j = 1; j < DIM-1; j++){ |             for(j = 1; j < DIM-1; j++){ | ||||||
|                 arrays[CENTER_LOC][IX(DIM-1,     i,     j)] = arrays[neighborIndex][IX(     1,     i,     j)]; |                 arrays[CENTER_LOC][IX(DIM-1,     i,     j)] = arrays[neighborIndex][IX(     1,     i,     j)] + adjacentVal; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
| @ -36,9 +39,11 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- face
 |     //x- face
 | ||||||
|     neighborIndex = CK(0,1,1); |     neighborIndex = CK(0,1,1); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / ((DIM-2)*(DIM-2)); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             for(j = 1; j < DIM-1; j++){ |             for(j = 1; j < DIM-1; j++){ | ||||||
|                 arrays[CENTER_LOC][IX(0,     i,     j)] = arrays[neighborIndex][IX(DIM-2,     i,     j)]; |                 arrays[CENTER_LOC][IX(0,     i,     j)] = arrays[neighborIndex][IX(DIM-2,     i,     j)] + adjacentVal; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
| @ -52,9 +57,11 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //y+ face
 |     //y+ face
 | ||||||
|     neighborIndex = CK(1,2,1); |     neighborIndex = CK(1,2,1); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / ((DIM-2)*(DIM-2)); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             for(j = 1; j < DIM-1; j++){ |             for(j = 1; j < DIM-1; j++){ | ||||||
|                 arrays[CENTER_LOC][IX(    i, DIM-1,     j)] = arrays[neighborIndex][IX(     i,     1,     j)]; |                 arrays[CENTER_LOC][IX(    i, DIM-1,     j)] = arrays[neighborIndex][IX(     i,     1,     j)] + adjacentVal; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
| @ -68,9 +75,11 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //y- face
 |     //y- face
 | ||||||
|     neighborIndex = CK(1,0,1); |     neighborIndex = CK(1,0,1); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / ((DIM-2)*(DIM-2)); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             for(j = 1; j < DIM-1; j++){ |             for(j = 1; j < DIM-1; j++){ | ||||||
|                 arrays[CENTER_LOC][IX(i,     0,     j)] = arrays[neighborIndex][IX(     i,     DIM-2,     j)]; |                 arrays[CENTER_LOC][IX(i,     0,     j)] = arrays[neighborIndex][IX(     i,     DIM-2,     j)] + adjacentVal; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
| @ -84,9 +93,11 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //z+ face
 |     //z+ face
 | ||||||
|     neighborIndex = CK(1,1,2); |     neighborIndex = CK(1,1,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / ((DIM-2)*(DIM-2)); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             for(j = 1; j < DIM-1; j++){ |             for(j = 1; j < DIM-1; j++){ | ||||||
|                 arrays[CENTER_LOC][IX(    i,     j, DIM-1)] = arrays[neighborIndex][IX(     i,     j,     1)]; |                 arrays[CENTER_LOC][IX(    i,     j, DIM-1)] = arrays[neighborIndex][IX(     i,     j,     1)] + adjacentVal; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
| @ -100,9 +111,11 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //z- face
 |     //z- face
 | ||||||
|     neighborIndex = CK(1,1,0); |     neighborIndex = CK(1,1,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / ((DIM-2)*(DIM-2)); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             for(j = 1; j < DIM-1; j++){ |             for(j = 1; j < DIM-1; j++){ | ||||||
|                 arrays[CENTER_LOC][IX(i,     j,     0)] = arrays[neighborIndex][IX(     i,     j,     DIM-2)]; |                 arrays[CENTER_LOC][IX(i,     j,     0)] = arrays[neighborIndex][IX(     i,     j,     DIM-2)] + adjacentVal; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
| @ -121,8 +134,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x+ y+ edge
 |     //x+ y+ edge
 | ||||||
|     neighborIndex = CK(2,2,1); |     neighborIndex = CK(2,2,1); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(DIM-1, DIM-1,     i)] = arrays[neighborIndex][IX(     1,     1,     i)]; |             arrays[CENTER_LOC][IX(DIM-1, DIM-1,     i)] = arrays[neighborIndex][IX(     1,     1,     i)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -133,8 +148,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x+ y- edge
 |     //x+ y- edge
 | ||||||
|     neighborIndex = CK(2,0,1); |     neighborIndex = CK(2,0,1); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(DIM-1, 0,     i)] = arrays[neighborIndex][IX(     1,     DIM-2,     i)]; |             arrays[CENTER_LOC][IX(DIM-1, 0,     i)] = arrays[neighborIndex][IX(     1,     DIM-2,     i)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -145,8 +162,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- y+ edge
 |     //x- y+ edge
 | ||||||
|     neighborIndex = CK(0,2,1); |     neighborIndex = CK(0,2,1); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(     0, DIM-1,     i)] = arrays[neighborIndex][IX(     DIM-2,     1,     i)]; |             arrays[CENTER_LOC][IX(     0, DIM-1,     i)] = arrays[neighborIndex][IX(     DIM-2,     1,     i)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -157,8 +176,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- y- edge
 |     //x- y- edge
 | ||||||
|     neighborIndex = CK(0,0,1); |     neighborIndex = CK(0,0,1); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(    0, 0,     i)] = arrays[neighborIndex][IX(   DIM-2,     DIM-2,     i)]; |             arrays[CENTER_LOC][IX(    0, 0,     i)] = arrays[neighborIndex][IX(   DIM-2,     DIM-2,     i)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -177,8 +198,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x+ z+ edge
 |     //x+ z+ edge
 | ||||||
|     neighborIndex = CK(2,1,2); |     neighborIndex = CK(2,1,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(DIM-1,    i, DIM-1)] = arrays[neighborIndex][IX(     1,    i,     1)]; |             arrays[CENTER_LOC][IX(DIM-1,    i, DIM-1)] = arrays[neighborIndex][IX(     1,    i,     1)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -189,8 +212,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x+ z- edge
 |     //x+ z- edge
 | ||||||
|     neighborIndex = CK(2,1,0); |     neighborIndex = CK(2,1,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(DIM-1,    i, 0)] = arrays[neighborIndex][IX(     1,    i,     DIM-2)]; |             arrays[CENTER_LOC][IX(DIM-1,    i, 0)] = arrays[neighborIndex][IX(     1,    i,     DIM-2)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -201,8 +226,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- z+ edge
 |     //x- z+ edge
 | ||||||
|     neighborIndex = CK(0,1,2); |     neighborIndex = CK(0,1,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(     0,    i, DIM-1)] = arrays[neighborIndex][IX(     DIM-2,    i,     1)]; |             arrays[CENTER_LOC][IX(     0,    i, DIM-1)] = arrays[neighborIndex][IX(     DIM-2,    i,     1)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -213,8 +240,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- z- edge
 |     //x- z- edge
 | ||||||
|     neighborIndex = CK(0,1,0); |     neighborIndex = CK(0,1,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(    0,    i, 0)] = arrays[neighborIndex][IX(   DIM-2,    i,     DIM-2)]; |             arrays[CENTER_LOC][IX(    0,    i, 0)] = arrays[neighborIndex][IX(   DIM-2,    i,     DIM-2)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -232,8 +261,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //y+ z+ edge
 |     //y+ z+ edge
 | ||||||
|     neighborIndex = CK(1,2,2); |     neighborIndex = CK(1,2,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(    i, DIM-1,    DIM-1)] = arrays[neighborIndex][IX(    i,     1,     1)]; |             arrays[CENTER_LOC][IX(    i, DIM-1,    DIM-1)] = arrays[neighborIndex][IX(    i,     1,     1)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -244,8 +275,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //y+ z- edge
 |     //y+ z- edge
 | ||||||
|     neighborIndex = CK(1,2,0); |     neighborIndex = CK(1,2,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(    i,DIM-1, 0)] = arrays[neighborIndex][IX(    i,     1,     DIM-2)]; |             arrays[CENTER_LOC][IX(    i,DIM-1, 0)] = arrays[neighborIndex][IX(    i,     1,     DIM-2)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -256,8 +289,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //y- z+ edge
 |     //y- z+ edge
 | ||||||
|     neighborIndex = CK(1,0,2); |     neighborIndex = CK(1,0,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(    i,     0, DIM-1)] = arrays[neighborIndex][IX(    i,     DIM-2,    1)]; |             arrays[CENTER_LOC][IX(    i,     0, DIM-1)] = arrays[neighborIndex][IX(    i,     DIM-2,    1)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -268,8 +303,10 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //y- z- edge
 |     //y- z- edge
 | ||||||
|     neighborIndex = CK(1,0,0); |     neighborIndex = CK(1,0,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|  |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         adjacentVal = adjacentVal / (DIM-2); | ||||||
|         for(i = 1; i < DIM-1; i++){ |         for(i = 1; i < DIM-1; i++){ | ||||||
|             arrays[CENTER_LOC][IX(    i,    0, 0)] = arrays[neighborIndex][IX(    i,   DIM-2,     DIM-2)]; |             arrays[CENTER_LOC][IX(    i,    0, 0)] = arrays[neighborIndex][IX(    i,   DIM-2,     DIM-2)] + adjacentVal; | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         for(i = 1; i < DIM; i++){ |         for(i = 1; i < DIM; i++){ | ||||||
| @ -285,7 +322,8 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x+ y+ z+ corner
 |     //x+ y+ z+ corner
 | ||||||
|     neighborIndex = CK(2,2,2); |     neighborIndex = CK(2,2,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|         arrays[CENTER_LOC][IX(DIM-1, DIM-1, DIM-1)] = arrays[neighborIndex][IX(     1,     1,     1)]; |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         arrays[CENTER_LOC][IX(DIM-1, DIM-1, DIM-1)] = arrays[neighborIndex][IX(     1,     1,     1)] + adjacentVal; | ||||||
|     } else { |     } else { | ||||||
|         arrays[CENTER_LOC][IX(DIM-1, DIM-1, DIM-1)] = fillVal; |         arrays[CENTER_LOC][IX(DIM-1, DIM-1, DIM-1)] = fillVal; | ||||||
|     } |     } | ||||||
| @ -293,7 +331,8 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x+ y+ z- corner
 |     //x+ y+ z- corner
 | ||||||
|     neighborIndex = CK(2,2,0); |     neighborIndex = CK(2,2,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|         arrays[CENTER_LOC][IX(DIM-1, DIM-1,     0)] = arrays[neighborIndex][IX(     1,     1, DIM-2)]; |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         arrays[CENTER_LOC][IX(DIM-1, DIM-1,     0)] = arrays[neighborIndex][IX(     1,     1, DIM-2)] + adjacentVal; | ||||||
|     } else { |     } else { | ||||||
|         arrays[CENTER_LOC][IX(DIM-1, DIM-1,     0)] = fillVal; |         arrays[CENTER_LOC][IX(DIM-1, DIM-1,     0)] = fillVal; | ||||||
|     } |     } | ||||||
| @ -303,7 +342,8 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x+ y- z+ corner
 |     //x+ y- z+ corner
 | ||||||
|     neighborIndex = CK(2,0,2); |     neighborIndex = CK(2,0,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|         arrays[CENTER_LOC][IX(DIM-1, 0, DIM-1)] = arrays[neighborIndex][IX(     1, DIM-2,     1)]; |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         arrays[CENTER_LOC][IX(DIM-1, 0, DIM-1)] = arrays[neighborIndex][IX(     1, DIM-2,     1)] + adjacentVal; | ||||||
|     } else { |     } else { | ||||||
|         arrays[CENTER_LOC][IX(DIM-1, 0, DIM-1)] = fillVal; |         arrays[CENTER_LOC][IX(DIM-1, 0, DIM-1)] = fillVal; | ||||||
|     } |     } | ||||||
| @ -311,7 +351,8 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x+ y- z- corner
 |     //x+ y- z- corner
 | ||||||
|     neighborIndex = CK(2,0,0); |     neighborIndex = CK(2,0,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|         arrays[CENTER_LOC][IX(DIM-1, 0,     0)] = arrays[neighborIndex][IX(     1, DIM-2, DIM-2)]; |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         arrays[CENTER_LOC][IX(DIM-1, 0,     0)] = arrays[neighborIndex][IX(     1, DIM-2, DIM-2)] + adjacentVal; | ||||||
|     } else { |     } else { | ||||||
|         arrays[CENTER_LOC][IX(DIM-1, 0,     0)] = fillVal; |         arrays[CENTER_LOC][IX(DIM-1, 0,     0)] = fillVal; | ||||||
|     } |     } | ||||||
| @ -321,7 +362,8 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- y+ z+ corner
 |     //x- y+ z+ corner
 | ||||||
|     neighborIndex = CK(0,2,2); |     neighborIndex = CK(0,2,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|         arrays[CENTER_LOC][IX(0, DIM-1, DIM-1)] = arrays[neighborIndex][IX( DIM-2,     1,     1)]; |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         arrays[CENTER_LOC][IX(0, DIM-1, DIM-1)] = arrays[neighborIndex][IX( DIM-2,     1,     1)] + adjacentVal; | ||||||
|     } else { |     } else { | ||||||
|         arrays[CENTER_LOC][IX(0, DIM-1, DIM-1)] = fillVal; |         arrays[CENTER_LOC][IX(0, DIM-1, DIM-1)] = fillVal; | ||||||
|     } |     } | ||||||
| @ -329,7 +371,8 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- y+ z- corner
 |     //x- y+ z- corner
 | ||||||
|     neighborIndex = CK(0,2,0); |     neighborIndex = CK(0,2,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|         arrays[CENTER_LOC][IX(0, DIM-1,     0)] = arrays[neighborIndex][IX( DIM-2,     1, DIM-2)]; |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         arrays[CENTER_LOC][IX(0, DIM-1,     0)] = arrays[neighborIndex][IX( DIM-2,     1, DIM-2)] + adjacentVal; | ||||||
|     } else { |     } else { | ||||||
|         arrays[CENTER_LOC][IX(0, DIM-1,     0)] = fillVal; |         arrays[CENTER_LOC][IX(0, DIM-1,     0)] = fillVal; | ||||||
|     } |     } | ||||||
| @ -339,7 +382,8 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- y- z+ corner
 |     //x- y- z+ corner
 | ||||||
|     neighborIndex = CK(0,0,2); |     neighborIndex = CK(0,0,2); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|         arrays[CENTER_LOC][IX(0, 0, DIM-1)] = arrays[neighborIndex][IX( DIM-2, DIM-2,     1)]; |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         arrays[CENTER_LOC][IX(0, 0, DIM-1)] = arrays[neighborIndex][IX( DIM-2, DIM-2,     1)] + adjacentVal; | ||||||
|     } else { |     } else { | ||||||
|         arrays[CENTER_LOC][IX(0, 0, DIM-1)] = fillVal; |         arrays[CENTER_LOC][IX(0, 0, DIM-1)] = fillVal; | ||||||
|     } |     } | ||||||
| @ -347,7 +391,8 @@ static inline void fluid_solve_bounds_checker(float ** arrays, float fillVal){ | |||||||
|     //x- y- z- corner
 |     //x- y- z- corner
 | ||||||
|     neighborIndex = CK(0,0,0); |     neighborIndex = CK(0,0,0); | ||||||
|     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ |     if(USE_BOUNDS && arrays[neighborIndex] != NULL){ | ||||||
|         arrays[CENTER_LOC][IX(0, 0,     0)] = arrays[neighborIndex][IX( DIM-2, DIM-2, DIM-2)]; |         adjacentVal = adjacencyMatrix == NULL ? 0 : adjacencyMatrix[neighborIndex]; | ||||||
|  |         arrays[CENTER_LOC][IX(0, 0,     0)] = arrays[neighborIndex][IX( DIM-2, DIM-2, DIM-2)] + adjacentVal; | ||||||
|     } else { |     } else { | ||||||
|         arrays[CENTER_LOC][IX(0, 0,     0)] = fillVal; |         arrays[CENTER_LOC][IX(0, 0,     0)] = fillVal; | ||||||
|     } |     } | ||||||
| @ -366,17 +411,17 @@ LIBRARY_API void fluid_solve_bounds(int numReadIn, Chunk ** chunkViewC, Environm | |||||||
|     int neighborIndex; |     int neighborIndex; | ||||||
|     for(chunkIndex = 0; chunkIndex < numReadIn; chunkIndex++){ |     for(chunkIndex = 0; chunkIndex < numReadIn; chunkIndex++){ | ||||||
|         Chunk * current = chunkViewC[chunkIndex]; |         Chunk * current = chunkViewC[chunkIndex]; | ||||||
|         fluid_solve_bounds_checker(current->d,0); |         fluid_solve_bounds_checker(current->d,0,current->incomingDensity); | ||||||
|         fluid_solve_bounds_checker(current->d0,0); |         fluid_solve_bounds_checker(current->d0,0,NULL); | ||||||
|         fluid_solve_bounds_checker(current->u,0); |         fluid_solve_bounds_checker(current->u,0,NULL); | ||||||
|         fluid_solve_bounds_checker(current->v,0); |         fluid_solve_bounds_checker(current->v,0,NULL); | ||||||
|         fluid_solve_bounds_checker(current->w,0); |         fluid_solve_bounds_checker(current->w,0,NULL); | ||||||
|         fluid_solve_bounds_checker(current->u0,0); |         fluid_solve_bounds_checker(current->u0,0,NULL); | ||||||
|         fluid_solve_bounds_checker(current->v0,0); |         fluid_solve_bounds_checker(current->v0,0,NULL); | ||||||
|         fluid_solve_bounds_checker(current->w0,0); |         fluid_solve_bounds_checker(current->w0,0,NULL); | ||||||
|         fluid_solve_bounds_checker(current->bounds,BOUND_MAX_VALUE); |         fluid_solve_bounds_checker(current->bounds,BOUND_MAX_VALUE,NULL); | ||||||
|         fluid_solve_bounds_checker(current->divergenceCache,0); |         fluid_solve_bounds_checker(current->divergenceCache,0,NULL); | ||||||
|         fluid_solve_bounds_checker(current->pressureCache,0); |         fluid_solve_bounds_checker(current->pressureCache,0,current->incomingPressure); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ | |||||||
| /**
 | /**
 | ||||||
|  * Divergence level we warn at |  * Divergence level we warn at | ||||||
|  */ |  */ | ||||||
| #define DIVERGENCE_WARNING_VALUE 100.0f | #define DIVERGENCE_WARNING_VALUE 300.0f | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  * Approximates the pressure for this chunk |  * Approximates the pressure for this chunk | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user