SDT-visc
Contents  
Functions  
 
 PDF Index |
The first issue is to understand how material properties are stored in pl.html . xxx
d_visco.tutomatortho.ddtransforms : sample manipulations
%% step ddTransforms : sample manipulations
% keywords{var{mdl,pl},fcn{m_elastic,feutil}}
mdl=struct('Node',[],'Elt',[],...
'pl',m_elastic('dbval1 Ortho1','dbval2 Steel'));
r1=feutil('getmat 1 -struct',mdl);
r2=m_elastic('FormulaOrtho',r1);%,struct('targ','ortho'))
% UD long fiber approximation
pl=m_elastic('formula{Em3.45e6, Ef380e6,Num.3, Nuf.33,rhom1.2e-6,rhof=1.95e-6,vf.6,unitMM,MatId10}');
feutil('_writepl MMSI',pl)
m_elastic('formula ortho',struct('pl',pl));
To ease transformations from other formats, m_elastic('FormulaLabToOrtho') supports transformations from tables to the SDT material format.
d_visco.tutomatortho.lab2pl : Build from labels
%% Step lab2pl : Build from labels
% keywords{var{PrePl,pl},fcn{feform.eq.feform_feelas3d_4}}}
PrePl={'name','Type','E1','E2','E3','nu12','nu13','nu23','Gxy','G13','G23'
'A',fe_mat('m_elastic','TM',6),126.810e3 8.908e3 8.908e3 .3 .3 .45 4.969e3 4.969e3 3.313e3};
PrePl(:,end+1)={'rho',1.6e-9};PrePl(:,end+1)={'MatId',1001};
mdl=feutil('setmat',mdl,struct('PrePl',{PrePl}));
%mdl=m_elastic('FormulaLabToOrtho',val,mdl);
% sdtweb fe_homo toortho
Computation of fiber orientation has been the object of much work [47]. Draping commercial codes are available: QUICK-FORM, CATIA CPD, MSC Laminate Modeller, FiberSIM. SDT only seeks to allow incorporation of results of such software.
d_visco('ScriptEltOrient') provides a sample script.
d_visco.tutomatortho.loadmesh : show material orientation
%% step loadMesh : show material orientation
% keywords{var{MeshCfg,RunCfg},fcn{}}
li={'MeshCfg{d_mesh(blade),compA,}';
'RunCfg{feplot}'};
RT=struct('nmap',vhandle.nmap);RT.nmap('CurExp')=li;
r2=sdtm.range.RT);mo2=r2.nmap('CurModel');%d2=mo2.nmap('CurTime');
fecom('colorfacew-alpha0')
fecom showmap EltOrient{d1{deflen,.3,edgecolor,r},d2{deflen,.3,edgecolor,g}}
mo3=feutil('orientNodeElt',mo2,struct('bas',[1 1 0 12 6 11]));
c20=feplot(20);c20.model=mo3; fecom('colorfacew-alpha0')
fecom showmap EltOrient{d1{deflen,.3,edgecolor,r},d2{deflen,.3,edgecolor,g}}
fecom(c20,';view4;viewv+180;views+90')
d_visco.tutomatortho.ply_to_layer_homog : build layer volume law from plies
%% Step ply_to_layer_homog : build layer volume law from plies
li={m_elastic('database{namePlyA,Matid10}','Ortho1');
m_elastic('database{namePlyB,Matid11}','Ortho2');
};li(:,3)={'mat'};li(:,2)=cellfun(@(x)x.name,li(:,1),'uni',0);
mo2=stack_set(mo2,li(:,[3 2 1]));
st1=(['formulaOrthoArea{AreaA1,MatId 1000,', ...
'laminate 10 .05 90 11 .05 -45 11 .05 45 10 .05 90,' ...
'silent0}']);
mo2=m_elastic(st1,mo2);mo2.Stack
% Area : zone with similar layup
% PlyNum : unique number of given ply. First Intrado ?
% Theta : angle of ply
% Thick
% PlyType : X/U
% MatName : (points to matM)
% CommentIndex
%model.il=p_shell('dbval 101 laminate 3 1.3e-3 0', ...
% 'dbval 202 laminate 2 .25e-3 0 3 1.3e-3 0 2 .25e-3 0', ...
% 'dbval 302 laminate 2 .25e-3 0 3 1.3e-3 0 2 .25e-3 0');
1
empty
d_visco.tutomatortho.orthosensib : sensitivity matrix
%% Step OrthoSensib : sensitivity matrix
% d_visco('TutoMatOrtho -s{loadMesh}');
% update sdtweb comp12 TestbedScriptLocal
% comp13('SolveEFracNom'); % Energy Fraction table
% comp13('SolveESplit'); % Localize the energy fractions
% sdtweb _tag t_visco Comp25CutI
comp13('setSolve',struct('Omega',0,'MatId',1,'Split','ortho'))
PA=comp13('ParamVh');cf=feplot(mo2);
PA.mdl=stack_set(mo2,'info','EigOpt',[5 10 1e3]);
comp13('setProject',struct('name',mo2.name,'root',sprintf('BladeA')));
comp13('solveMVR'); % Reduce with components
comp13('setSolve',struct('IndMode','rb+(1:4)'))
comp13('solveEFracNom'); % comgui imwrite
comp13('solveESplit');fecom scc2e-3
if sdtweb('_TutoNeed','figgen')
comgui('imwrite',1,'@tempdir/sdtdemos/plots/d_visco_TutoMatOrtho_EFracNom.png')
fecom('ch1')
comgui('imwrite',2,'@tempdir/sdtdemos/plots/d_visco_TutoMatOrtho_ESplit.png')
end
1
empty
d_visco.tutomatortho.impmatrix : use of implicit matrices
%% Step ImpMatrix : use of implicit matrices
mo3=fe_caseg('ParMatCut',mo2,'groupall',struct('lab','Ortho','value',1));
mo3=fe_caseg('assemble -matdes -1 -SE',mo3);
if isa(mo3.K{1},'double');mo3.K(1)=[];mo3.Klab(1)=[];mo3.Opt(:,1)=[];end
c5=feplot(5);c5.model=mo3; c5.def=fe_eig(mo3,[5 20 1e3]);
c5.sel(1)='urn.EnerAtNode{sel{MatID1},KObs{2},os{CmParulaB,CbTR{String,eCL}}';
%% endTuto
1
empty
Run
. It is often interesting to analyze how different components of an orthotropic constitutive law contribute to the strain energy. The two standard plots are