1616unique_cluster = unique(Clusters_tmp ); % Unique cluster
1717unique_cluster(unique_cluster == 0 )=[]; % Remove background (0) if any
1818number_cluster = length(unique_cluster ); % Number of cluster
19- cluster_size = zeros(number_cluster ,12 ); % Initialise
19+ cluster_size = zeros(number_cluster ,17 ); % Initialise
2020% Column
2121% 1 : cluster number of voxel
2222% 2 : cluster volume in um3
2929% 9 : 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face2face connection direction 1)
3030% 10: 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face2face connection direction 2)
3131% 11: 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face2face connection direction 3)
32+ % 12 : 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face connection 1)
33+ % 13: 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face connection 1)
34+ % 14: 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face connection 1)
35+ % 15 : 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face2face connection direction 1)
36+ % 16: 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face2face connection direction 2)
37+ % 17: 1= connected cluster, 2=unknown cluster, 3=isolated cluster (face2face connection direction 3)
38+
3239Connectivity_structure.connected_id= connected_id ;
3340Connectivity_structure.unknown_id= unknown_id ;
3441Connectivity_structure.isolated_id= isolated_id ;
7986% Cluster does not connect the faces, and do not touch the domain's boundaryies: =3
8087for current_direction= 1 : 1 : 3 % Loop on every direction
8188 Clusters_TransportFace2Face .direction(current_direction ).array = zeros(Domain_size ,' uint8' ); % Initialise
89+ Clusters_TransportFromFace1 .direction(current_direction ).array = zeros(Domain_size ,' uint8' ); % Initialise
90+ Clusters_TransportFromFace2 .direction(current_direction ).array = zeros(Domain_size ,' uint8' ); % Initialise
8291end
8392
8493Clusters_LargestIsolatedUnknown .array(Clusters_ ==1 )=connected_id ; % Main (largest) cluster
139148 end
140149 Clusters_TransportFace2Face .direction(3 ).array(I ) = connectivity_id_3 ;
141150 cluster_size(k ,11 )=connectivity_id_3 ;
151+
152+
153+ % % Check if cluster connect to one face
154+ % Along direction 1
155+ if x_min == 1
156+ connectivity_id_1 = connected_id ; % Connect
157+ elseif y_min == 1 || z_min == 1 || y_max == Domain_size(2 ) || z_max == Domain_size(3 )
158+ connectivity_id_1 = unknown_id ; % Does not connect, but connection actually unknown due to limited field of view
159+ else
160+ connectivity_id_1 = isolated_id ; % Does not connect (true isolated cluster)
161+ end
162+ Clusters_TransportFromFace1 .direction(1 ).array(I ) = connectivity_id_1 ;
163+ cluster_size(k ,12 )=connectivity_id_1 ;
164+
165+ % Along direction 2
166+ if y_min == 1
167+ connectivity_id_2 = 1 ; % Connect
168+ elseif x_min == 1 || z_min == 1 || x_max == Domain_size(1 ) || z_max == Domain_size(3 )
169+ connectivity_id_2 = unknown_id ; % Does not connect, but connection actually unknown due to limited field of view
170+ else
171+ connectivity_id_2 = isolated_id ; % Does not connect (true isolated cluster)
172+ end
173+ Clusters_TransportFromFace1 .direction(2 ).array(I ) = connectivity_id_2 ;
174+ cluster_size(k ,13 )=connectivity_id_2 ;
175+
176+ % Along direction 3
177+ if z_min == 1
178+ connectivity_id_3 = 1 ; % Does not connect (true isolated cluster)
179+ elseif y_min == 1 || x_min == 1 || y_max == Domain_size(2 ) || x_max == Domain_size(1 )
180+ connectivity_id_3 = unknown_id ; % Does not connect (true isolated cluster)
181+ else
182+ connectivity_id_3 = isolated_id ; % Does not connect (true isolated cluster)
183+ end
184+ Clusters_TransportFromFace1 .direction(3 ).array(I ) = connectivity_id_3 ;
185+ cluster_size(k ,14 )=connectivity_id_3 ;
186+
187+ % % Check if cluster connect to one face
188+ % Along direction 1
189+ if x_max == Domain_size(1 )
190+ connectivity_id_1 = connected_id ; % Connect
191+ elseif y_min == 1 || z_min == 1 || y_max == Domain_size(2 ) || z_max == Domain_size(3 )
192+ connectivity_id_1 = unknown_id ; % Does not connect, but connection actually unknown due to limited field of view
193+ else
194+ connectivity_id_1 = isolated_id ; % Does not connect (true isolated cluster)
195+ end
196+ Clusters_TransportFromFace2 .direction(1 ).array(I ) = connectivity_id_1 ;
197+ cluster_size(k ,15 )=connectivity_id_1 ;
198+
199+ % Along direction 2
200+ if y_max == Domain_size(2 )
201+ connectivity_id_2 = 1 ; % Connect
202+ elseif x_min == 1 || z_min == 1 || x_max == Domain_size(1 ) || z_max == Domain_size(3 )
203+ connectivity_id_2 = unknown_id ; % Does not connect, but connection actually unknown due to limited field of view
204+ else
205+ connectivity_id_2 = isolated_id ; % Does not connect (true isolated cluster)
206+ end
207+ Clusters_TransportFromFace2 .direction(2 ).array(I ) = connectivity_id_2 ;
208+ cluster_size(k ,16 )=connectivity_id_2 ;
209+
210+ % Along direction 3
211+ if z_max == Domain_size(3 )
212+ connectivity_id_3 = 1 ; % Does not connect (true isolated cluster)
213+ elseif y_min == 1 || x_min == 1 || y_max == Domain_size(2 ) || x_max == Domain_size(1 )
214+ connectivity_id_3 = unknown_id ; % Does not connect (true isolated cluster)
215+ else
216+ connectivity_id_3 = isolated_id ; % Does not connect (true isolated cluster)
217+ end
218+ Clusters_TransportFromFace2 .direction(3 ).array(I ) = connectivity_id_3 ;
219+ cluster_size(k ,17 )=connectivity_id_3 ;
220+
221+
142222end
143223
144224% Save results in structure
156236 Clusters_TransportFace2Face .direction(current_direction ).connected_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFace2Face .direction(current_direction ).array== connected_id ))) / Numbervoxel_phase ;
157237 Clusters_TransportFace2Face .direction(current_direction ).unknown_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFace2Face .direction(current_direction ).array== unknown_id ))) / Numbervoxel_phase ;
158238 Clusters_TransportFace2Face .direction(current_direction ).isolated_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFace2Face .direction(current_direction ).array== isolated_id ))) / Numbervoxel_phase ;
239+
240+ Clusters_TransportFromFace1 .direction(current_direction ).connected_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFromFace1 .direction(current_direction ).array== connected_id ))) / Numbervoxel_phase ;
241+ Clusters_TransportFromFace1 .direction(current_direction ).unknown_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFromFace1 .direction(current_direction ).array== unknown_id ))) / Numbervoxel_phase ;
242+ Clusters_TransportFromFace1 .direction(current_direction ).isolated_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFromFace1 .direction(current_direction ).array== isolated_id ))) / Numbervoxel_phase ;
243+
244+ Clusters_TransportFromFace2 .direction(current_direction ).connected_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFromFace2 .direction(current_direction ).array== connected_id ))) / Numbervoxel_phase ;
245+ Clusters_TransportFromFace2 .direction(current_direction ).unknown_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFromFace2 .direction(current_direction ).array== unknown_id ))) / Numbervoxel_phase ;
246+ Clusters_TransportFromFace2 .direction(current_direction ).isolated_cluster_phasefraction = 100 * sum(sum(sum( Clusters_TransportFromFace2 .direction(current_direction ).array== isolated_id ))) / Numbervoxel_phase ;
247+
159248end
160249% Save results in structure
161250Connectivity_structure.Clusters_LargestIsolatedUnknown = Clusters_LargestIsolatedUnknown ;
162251Connectivity_structure.Clusters_TransportFace2Face = Clusters_TransportFace2Face ;
163-
252+ Connectivity_structure.Clusters_TransportFromFace1 = Clusters_TransportFromFace1 ;
253+ Connectivity_structure.Clusters_TransportFromFace2 = Clusters_TransportFromFace2 ;
164254
165255end
0 commit comments