# MATLAB: Colouring Tetramesh – Element wise

delauneyfinite elementsMATLABtetrahedratetramesh

I'm working with tetrahedral finite elements. I can happily set up a mesh and work with said mesh. A really simple example code then gives the following with 72 elements:
``clear,close all; clc; dbstop if error;Nx = 4; Ny =3; Nz = 3; %No. Nodes Nx*Ny Ny = odd%Variables to create Mesh:a = 1; b = 1; c = 2;X = linspace(0,a,Nx); Y = linspace(0,c,Ny); Z = linspace(0,a,Nz);[X,Y,Z] = meshgrid(X,Y,Z); X = X(:); Y = Y(:); Z=Z(:);%Meshing:TRI = delaunay(X,Y,Z);N = [X,Y,Z];              %Node Coordinates Vector%figure; triplot(TRI,X,Y);figure; tetramesh(TRI,[X(:),Y(:),Z(:)]), xlabel('x'),ylabel('y'),zlabel('z');``
As a part of my model, each individual element is assumed to be homogoenous and as such has a material property associated with it which for the example here is given by:
``NE = size(TRI,1); %Number of ElementsElements = 1:NE;Rho_e = zeros(NE,1);Rho_e(Elements(sum(Y(TRI) <= b,2)==3)) = rho;``
When I'm working with triangles in 2D. I can make use of trisurf and create a plot of the material properties:
``Nx = 13; Ny =13; %No. Nodes%Variables to create Mesh:a = 1; b = 1; c = 2;X = linspace(0,a,Nx); Y = linspace(0,c,Ny);    [X,Y] = meshgrid(X,Y); X = X(:); Y = Y(:);TRI = delaunay(X,Y); %Simple Meshfigure;trisurf(TRI,X,Y,0*X,Rho_e,'edgecolor','k','facecolor','interp');`` I'm currently trying then to create this plot for a 3D mesh of delauney tetrahedra as set up in the previous code. My current attempt looks like:
``tetramesh(TRI,[X,Y,Z],Rho_e,'facecolor','interp');view(2); axis equal; colorbar; xlim([0,a]); ylim([0,c]); zlim([0,a]);``
Which results in the following error message:
``Warning: Error creating or updating Patch Error in value of property  FaceVertexCData Number of colors must equal number of vertices > In defaulterrorcallback (line 12)  In Oct8_3DFEM (line 56)``
My guess is that I somehow need to manipulate my Rho vector from reprsenting individual elements to individual vertices. However for physical purposes it is important I find Rho_e first. The final image I'm searching for will essentially be a 3D projection of the 2D one attached above. Any thoughts, advice or other suggestions would be greatly appreciated

``get(p)    %%    FaceVertexCData = [ (72 by 1) double array]    %%    Vertices = [ (169 by 3) double array]``
``p1 = tetramesh(TRI,[X,Y,Z]);set(p1,'facevertexcdata',jet(numel(X)),'facecolor','interp');``