Home > freetb4matlab > msh > MSH2Mdisplacementsmoothing.m

MSH2Mdisplacementsmoothing

PURPOSE ^

%

SYNOPSIS ^

function [Ax,Ay] = MSH2Mdisplacementsmoothing(msh, k)

DESCRIPTION ^

% -*- texinfo -*-
% @deftypefn {Function File} {[@var{Ax},@var{Ay}]} = MSH2Mdisplacementsmoothing(@var{msh},@var{k})
%
% To displace the boundary of a 2D mesh, set a spring with
% force/length constant @var{k} along each edge and enforce
% equilibrium.
%
% This function builds matrices containing the resulting
% (linearized) equation for x and y coordinates of each mesh node.
% Boundary conditions enforcing the displacement (Dirichlet type
% problem) or the force (Neumann type) at the boundary must be added
% to make the system solvable, e.g.:
%
% @example
% msh = MSH2Mstructmesh(linspace(0,1,10),@
% linspace(0,1,10),@
% 1,1:4, 'left');
% dnodes = MSH2Mnodesonsides(msh,1:4);
% varnodes = setdiff([1:columns(msh.p)],dnodes);
% xd = msh.p(1,dnodes)';
% yd = msh.p(2,dnodes)';
% dx = dy = zeros(columns(msh.p),1);
% dxtot = dytot = -.5*sin(xd.*yd*pi/2);
% Nsteps = 10;
% for ii=1:Nsteps
%  dx(dnodes) = dxtot;
%  dy(dnodes) = dytot;
%  [Ax,Ay] = MSH2Mdisplacementsmoothing(msh,1);
%  dx(varnodes) = Ax(varnodes,varnodes) \ ...
%      (-Ax(varnodes,dnodes)*dx(dnodes));
%  dy(varnodes) = Ay(varnodes,varnodes) \ ...
%      (-Ay(varnodes,dnodes)*dy(dnodes));
%  msh.p += [ dx'/Nsteps; dy'/Nsteps ] ;
%  triplot(msh.t(1:3,:)',msh.p(1,:)',msh.p(2,:)');
%  pause(.01)
% end
% @end example
%
% @seealso{MSH2Mjigglemesh}
%
% @end deftypefn

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Sat 16-May-2009 00:04:49 by m2html © 2003