MATLAB: Find Specific Faces on a 3D PDE DiscreteGe​ometry/The​rmalModel

3d plotsfacelabelMATLABpdetoolbox

Hi,
I am struggling to create a universal code that is able to solve a Thermal Model of heat travelling through a cube from one face to the other with different cavity types.
I was hoping to find a way to extract the number of the faces on the outer surface of the cube on opposing sides in either the x or y direction. I wish to do this so that I can easily change the model without having to manually find the values of opposing faces. Something like this;
thermalBC(model,'Face',pos_face,'Temperature',pos_t);
thermalBC(model,'Face',zero_face,'Temperature',zero_t);
where the pos_face and zero_face variables are extracted from the model.
Cheers!

Best Answer

I have something similar, and can now express the desired faces as variables such as this;
figure, h1 = pdegplot(model,'FaceLabels','on'); %Display model and create variable to find facelabels.
hp = h1.Parent;
faceLabelsArray = hp.Children; %Pull Facelabels from figure
LF = length(faceLabelsArray); %Define length so make this universally applicable
labelCells = {faceLabelsArray(1:LF-6).String}; %Pull separate cells for each face
labelNums = length(labelCells):-1:1; %The faces are created backwards, this makes it chronilogical
positionCells = {faceLabelsArray(1:LF-6).Position}; %Find (x,y,z) coords of each face label
positionNums = cell2mat(positionCells'); %Make this into matrix
a = find(positionNums(:,1)>(cubelength/2)); pos = labelNums(a); %Find specific faces based on a set location
b = find(positionNums(:,1)<-(cubelength/2)); zer = labelNums(b);
The reason why I have set the boundary for my desired faces to be chosen is just because I have it centred on (0,0,0).
Hope this helps anyone with a similar requirement!