1 Target Applications Openfem History Design Criteria a Matlab/Scilab Toolbox

1 Target Applications Openfem History Design Criteria a Matlab/Scilab Toolbox

Target OpenFEM is meant to let you use it’s components to build your application • General purpose FEM solver • Multi-physic support • Toolbox flexibility and state of the art performance OpenFEM An open source finite element toolbox SDTools : Etienne Balmes, Jean Michel Leclere INRIA : D. Chapelle, C. Delforge, A. Hassim, M. Oscar : catenary-pantograph interaction Vidrascu, … SDTools/SNCF-DIR Dynavoie SDTools/SNCF-DIR 3D model explicit integration, 1 million of time step in 2 hours Applications OpenFEM history Start in 2001 from • Structural dynamics toolbox .m file elements limited library • MODULEF large library but no longer a convenient prototyping environment Phase I -> OpenFEM 1.0 & 2.0 Heart simulation Internal ear modeling INRIA, Zapadoceska Univerzita University Hospital Zuerich • Port of MODULEF elements (2D and 3D volumes, MITC4) • Translation to SCILAB (Claire Delforge) Phase II (current) ECP/MSSMat MISS3D • Efficient non-linear operation (generic compiled elements, geometric non-linear mechanics, … ) ECP/MSSMat Gefdyn Design criteria A Matlab/Scilab Toolbox, why ? • Be a toolbox (easy to develop, debug, • Development is easier (interactive optimization only should take time) mode, debugger) • Optimize ability to be extended by • Students (non experts) understand it users and can rapidly prototype variations • Performance identical to good fully from standard code compiled code • Performance is not worse (can be • Solve very general multi-physics FE better than poor compiled code) problems • One can easily link into most external • Be suitable for application deployment libraries 1 Easy user extensions OpenFEM architecture • Object oriented concepts (user object provides its methods) Preprocessing FEM core Postprocessing • But non typed data structures (avoid need to declare • Mesh • Shape function utilities • Stress computations inheritance properties) manipulations • Element functions • Signal processing •Structured • Matrix and load assembly • 3D visualization (major meshing • Factored matrix object extension , optimized, Example user element • Property/boundary (dynamic selection of sparse object based) condition setting library) Export • Linear static and time •MEDIT Import response (linear and non • Element name of .m file (beam1.m) • Nastran, IDEAS, • Modulef, GMSH, linear) SAMCEF • Must provide basic methods (node, DOF, face, parent, …) GID • Real eigenvalues • Ensight, MISS3D, • Nastran, IDEAS, • Optimized solvers for large • Self provide calling format. Eg : beam1(‘call’) Gefdyn ANSYS, PERMAS, problems, superelements, [k1,m1]=beam1(nodeE, elt(cEGI(jElt),:), pointers(:,jElt), integ, constit, SAMCEF, MISS, and system dynamics, model elmap, node); GEFDYN reduction and optimization • Drive other software (NASTRAN, MISS) Other self extensions : property functions OpenFEM, SDTools, MSSMat Meshing 1 : example Meshing 2 : femesh/feutil femesh • Structured meshing • Add FEeli FEelj, AddSel • ObjectBeamLine i, ObjectMass i • AddNode [,New] [, From i] • ObjectHoleInPlate FEelt=[]; • Mapped divisions • Object[Quad,Beam,Hexa] MatId ProId FEnode = [1 0 0 0 0 0 0;2 0 0 0 0 0 .15; • AddTest [,NodeShift,Merge] • Objects (beam, circle, • Divide div1 div2 div3 •Object[Circle,Cylinder,Disk] 3 0 0 0 0.4 1.0 .176;4 0 0 0 0.4 0.9 0.176]; • Optim [Model, NodeNum, EltCheck] % fuselage tube, …) • DivideInGroups • DivideGroup i ElementSelectors • Orient, Orient i [ , n nx ny nz] [,-neg] femesh('objectbeamline 1 2'); • Plot [Elt, El0] femesh('extrude 0 1.0 0.0 0.0', … •EltId • Extrude nRep tx ty tz • Quad2Tria, quad42quadb, etc. [linspace(0,.55,5) linspace(.65,1.4,6) 1.5]); • RefineBeam femesh('addsel;'); • FindDof ElementSelectors •GetDof • Remove[Elt,El0] ElementSelectors •Renumber % vertical tail • Find [Elt,El0] ElementSelectors • FindNode Selectors • RepeatSel nITE tx ty tz femesh('objectbeamline',femesh('findnode z==.15 & x>=1.4')); • Rev nDiv OrigID Ang nx ny nz femesh(';extrude 3 0 0 .1;addsel;'); • GetEdge[Line,Patch] • GetElemF • RotateSel OrigID Ang nx ny nz % vertical horizontal tail • Sel [Elt,El0] ElementSelectors femesh('objectbeamline',femesh('findnode z==.45')); •GetLine •GetNodeSelectors • SelGroup i, SelNode i femesh('extrude 0 0.0 0.2 0.0',[-1 -.5 0 .5 1]); • SetGroup [i,name] [Mat j, Pro k, EGID e, Name s] femesh('addsel;'); • GetNormal[Elt,Node][,Map] •GetPatch •StringDOF Node: [144x7 double] • Info [ ,FEeli, Nodei] • SymSel OrigID nx ny nz % right drum • TransSel tx ty tz femesh(';objectbeamline 3 4;extrude 1 .4 0 0'); Elt: [100x9 double] • Join [,el0] [group i, EName] •model [,0] • UnJoin Gp1 Gp2 femesh('divide',[0 2/40 15/40 25/40 1],[0 .7 1]); pl: [2x6 double] femesh('addsel;'); • Matid,ProId,MPID il: [4x6 double] % left drum bas: [] femesh(';symsel 1 0 1 0;addsel;'); Stack: {} Generation, Selection, … Meshing 3: unstructured Meshing 4: fe_gmsh FEnode = [1 0 0 0 0 0 0; 2 0 0 0 1 0 0; 3 0 0 0 0 2 0]; Rationale : meshing is a serious femesh('objectholeinplate 1 2 3 .5 .5 3 4 4'); FEelt=FEel0;femesh('selelt seledge');model=femesh('model0'); business that needs to be model.Node=feutil('getnode groupall',model); integrated in a CAD environment. model=fe_gmsh('addline',model,'groupall'); OpenFEM is a computing mo1=fe_gmsh('write temp.msh -lc .3 -run -2 -v 0',model); environment. feplot(mo1); delete('temp.msh') •IMPORT (MODULEF, GMSH, GID, Default element size NASTRAN, ANSYS, SAMCEF, PERMAS, GMSH options IDEAS) • Good functionality for 2D and 3D • Run meshing software : GMSH Driver, • Limited handling of complex surfaces MODULEF • 2D quad meshing, 2D Delaunay OpenFEM, SDTools 2 Meshing 5: selection Element library Recursive node and element selections m-file functions The OpenFEM • 3D lines/points : Bar, Beam, Pre-stressed beam, specification is designed Spring, bush, viscoelastic spring, mass for multiphysics GID ~=i EltId i • Shells 3/4 nodes applications Group ~=i EltInd i • Multilayer shell element Groupa i EltName ~=s mex from MODULEF • 2D, plane stress/strain, axi, linear, quadratic 99 DOF/node InElt{sel} EGID == i Facing > cos x y z • 3D, linear and quadratic, geometric-linear, orthotropy 999 internal DOF/element NodeId > i • Shells (MITC4) NotIn{sel} Group i mex (generic compiled elements) Plane == i nx ny nz InNode i • 2D, plane stress/strain, linear, quadratic rad <=r x y z MatId i • 3D, linear and quadratic, geometric non-linear Setname name ProId i mechanics, full anisotropy, mechanical or thermal pre- SelEdge type stress x >a • Acoustic fluids x y z SelFace type • INRIA : hyperelasticity, follower pressure WithNode i • SDTools : piezo volumes and shells with composite WithoutNode i support, poroelasticity Recent, in development Shape function utilities (integrules) User elements elseif comstr(Cam,'node'); out = [1 2]; elseif comstr(Cam,'prop'); out = [3 4 5]; Supported topologies are elseif comstr(Cam,'dof'); out=[1.01 1.02 1.03 2.01 2.02 2.03]'; elseif comstr(Cam,'line'); out = [1 2]; elseif comstr(Cam,'face'); out =[]; • bar1 (1D linear) » integrules('hexa8',3) elseif comstr(Cam,'sci_face'); out = [1 2 2]; elseif comstr(Cam,'edge'); out =[1 2]; • beam1 (1D cubic) elseif comstr(Cam,'patch'); out = [1 2]; elseif comstr(Cam,'parent'); out = 'beam1'; • quad4 (2D bi-linear), quadb (2d quadratic) N: [27x8 double] • tria3 (2D affine), tria6 (2D quadratic) Nr: [27x8 double] Ns: [27x8 double] • tetra4, tetra10 Nt: [27x8 double] [k1,m1]=beam1(nodeE, elt(cEGI(jElt),:), Nw: 27 pointers(:,jElt), integ, constit, elmap, node); • penta6, penta15 NDN: [8x108 double] NDNLabels: {'' ',x' ',y' ',z'} • hexa8, hexa20, hexa27 [ID,pl,il]=deal(varargin); jdet: [27x1 double] pe=pe(find(pe(:,1)==ID(1),3:end); % material properties w: [27x4 double] ie=ie(find(ie(:,1)==ID(2),3:end); Nnode: 8 % E*A nu eta rho*A A lump xi: [8x3 double] constit = [pe(1)*ie(4) 0 pe(3)*ie(4) ie(4) ie(7)]; integ=ID;%matid proid type: 'hexa8' Elmap=[]; out=constit(:); out1=integ(:); out2=ElMap; Generic compiled elements Generic compiled elements During assembly init Objective ease implementation of define • arbitrary multi-physic •D ↔ constit • linear element families • Good compiled speed • ε ↔ EltConst.NDN • provisions for non linear extensions •Ke ↔ D,e (EltConst. Assumptions MatrixIntegrationRule built in integrules MatrixRule) •Strain ε=[B]{q} linear function of N and ∇N • Element matrix quadratic function of strain EltConst=p_solid('constsolid','hexa8',[],[]) p_solid('constsolid','hexa8',[],[]) p_solid('constfluid','hexa8',[],[]) 3 Boundary conditions ofact : gateway to sparse libraries Cases define : Kq=F is central to most FEM problems. Optimal is case/machine boundary conditions, point and distributed loads, dependent. ofact object allows library independent code. physical parameters, ... data=struct('sel','x==-.5', ... 'eltsel','withnode {z>1.25}', ... •Method: dynamic selection of method (OpenFEM, SDTools) 'def',1,'DOF',.19); model = fe_case(femesh('testubeam'),... lu : MATLAB sparse LU solver 'FSurf','Pressure load',data, ... chol : MATLAB sparse Cholesky solver pardiso : PARDISO sparse solver 'FixDof','Fixed boundary condition','x==0'); *umfpack : UMFPACK solver (NOT AVAILABLE ON THIS MACHINE) -> spfmex : SDT sparse LDLt solver mtaucs : TAUCS sparse solver Supported boundary conditions sp_util : SDT skyline solver *psldlt : SGI sparse solver (NOT AVAILABLE ON THIS MACHINE) • KeepDOF, FixDOF • Rigid •Symfact: symbolic factorization (renumbering, allocation) •MPC, Un=0 •Fact: numeric factorization (possibly multiple for single symfact) Handling by elimination : solve Weld spots and damping treatment •Solve: forward backward solve

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    5 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us