|
FEATool Multiphysics
v1.17.5
Finite Element Analysis Toolbox
|
EX_FLUIDSTRUCTURE3 Fluid-structure interaction - elastic beam.
[ FEA, OUT ] = EX_FLUIDSTRUCTURE3( VARARGIN ) Example for fluid-structure interaction flow around an elastic beam.
[1] Wall W., Ramm E. Fluid-Interaktion mit stabilisierten Finiten Elementen. Phd Thesis, Institut fur Baustatik, Universitat Stuttgart, 1999.
Accepts the following property/value pairs.
Input Value/{Default} Description
-----------------------------------------------------------------------------------
iplot scalar 0/{1} Plot solution (=1)
.
Output Value/(Size) Description
-----------------------------------------------------------------------------------
fea struct Problem definition struct
out struct Output struct
cOptDef = { 'iplot', 1;
'fid', 1 };
[got,opt] = parseopt(cOptDef,varargin{:});
% Geometry.
fea.sdim = { 'x', 'y' };
gobj1 = gobj_rectangle( 0, 19.5, 0, 12, 'R1' );
gobj2 = gobj_rectangle( 3.5, 13.5, 3.5, 8.5, 'R2' );
gobj3 = gobj_rectangle( 4.5, 5.5, 5.5, 6.5, 'R3' );
fea.geom.objects = { gobj1, gobj2, gobj3 };
fea.geom = copy_geometry_object( 'R3', fea.geom );
gobj = gobj_rectangle( 5.5, 9, 6-0.03, 6+0.03, 'R5' );
fea = geom_add_gobj( fea, gobj );
fea.geom = geom_apply_formula( fea.geom, 'R1-R3' );
fea.geom = geom_apply_formula( fea.geom, 'R2-R4' );
% Grid generation.
hmaxb = 0.75*ones(1,17);
hmaxb([1:6,11:13]) = 0.015;
hmaxb([14:17]) = 0.2;
fea.grid = gridgen( fea, 'hmaxb', hmaxb, 'gridgen', 'gmsh', 'fid', opt.fid );
% Equation settings.
fea = addphys( fea, @fluidstructure );
fea.phys.fsi.eqn.coef{1,end} = { '0.1', '1.18*1e-3', '1.18*1e-3' }; % Density.
fea.phys.fsi.eqn.coef{2,end} = { '1', '1.82*1e-4', '1.82*1e-4' }; % Viscosity.
fea.phys.fsi.eqn.coef{3,end} = { '0.25', '0.3', '0.3' }; % Poisson's ratio.
fea.phys.fsi.eqn.coef{4,end} = { '2.5e6', '1', '1' }; % Modulus of elasticity.
fea.phys.fsi.prop.active = [ 0, 1, 1; 0, 1, 1; 0, 1, 1; 1, 0, 0; 1, 0, 0 ];
% Boundary settings.
fea.phys.fsi.bdr.sel = [ 6, 1, 1, 1, 1, 1, 5, 3, 5, 2, -2, -2, -2, -1, -1, -1, -1 ];
fea.phys.fsi.bdr.coef{2,end}{1,10} = 51.3;
% Solver.
fea = parsephys(fea);
fea = parseprob(fea);
[fea.sol.u,fea.sol.t,fea.sol.grid.p] = fsisolve( fea, 'tstep', 0.01, 'tmax', 1, 'fid', opt.fid );
% Postprocessing.
if( opt.iplot>0 )
postplot(fea,'surfexpr','p')
end
% Error checking.
v_min = inf; v_max = -inf;
for i=80:size(fea.sol.u,2)
[vm,vx] = minmaxsubd( 'dy', fea, [], [], [], i );
if( vm<v_min )
v_min = vm;
i_min = i;
end
if( vx>v_max )
v_max = vx;
i_max = i;
end
end
out.pass = i_min == 90 & ...
abs((v_min + 0.5556)/0.5556) < 1e-2 & ...
i_max == 100 & ...
abs((v_max - 0.2744)/0.2744) < 1e-2;
if( nargout==0 )
clear fea out
end