How to set space-varying boundary conditions?
2 views (last 30 days)
Show older comments
Hello,
the following code gives 6 faces. I want to add a space-varying boundary condition for one face (F6). I think it is not possible to use applyBoundaryCondition(). How can I divide face F6 into small slices to specify constant boundary conditions for each of them?
Many thanks
Stephan
% Create a 3-dimensional PDE Model
model = createpde(3);
% Construct the Geometry
[x,y,z] = meshgrid([-3:0.25:3],[-2:0.25:2],[-1:0.25:1]);
% Create the convex hull.
x = x(:);
y = y(:);
z = z(:);
K = convhull(x,y,z);
% Put the data in the correct shape for |geometryFromMesh|.
nodes = [x';y';z'];
elements = K';
% Create a PDE model and import the mesh.
geometryFromMesh(model,nodes,elements);
% Plot geometry
figure
pdegplot(model,'FaceLabels','on')
title('Bracket with Face Labels')
0 Comments
Accepted Answer
Alan Weiss
on 1 Mar 2017
You can use applyBoundaryCondition. You just have to create a mesh for the geometry.
% Create a 3-dimensional PDE Model
model = createpde(3);
% Construct the Geometry
[x,y,z] = meshgrid([-3:0.25:3],[-2:0.25:2],[-1:0.25:1]);
% Create the convex hull.
x = x(:);
y = y(:);
z = z(:);
K = convhull(x,y,z);
% Put the data in the correct shape for |geometryFromMesh|.
nodes = [x';y';z'];
elements = K';
% Create a PDE model and import the mesh.
geometryFromMesh(model,nodes,elements);
% Plot geometry
figure
pdegplot(model,'FaceLabels','on')
title('Bracket with Face Labels')
% Now the new stuff
generateMesh(model)
ufun = @(region,state)[region.x.^2;region.x.^2 + region.y.^2;region.x.^2 + region.y.^2 - region.z]
applyBoundaryCondition(model,'dirichlet','Face',6,'u',ufun,'Vectorized','on')
specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',[1;2;3]);
results = solvepde(model);
pdeplot3D(model,'ColorMapData',results.NodalSolution(:,1))
Alan Weiss
MATLAB mathematical toolbox documentation
More Answers (0)
See Also
Categories
Find more on Geometry and Mesh in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!