fe_simul

fe_simul#

Purpose

High level access to standard solvers.

Syntax

 [Result,model] = fe_simul('Command',MODEL,OPT)

Description

fe_simul is the generic function to compute various types of response. It allows an easy access to specialized functions to compute static, modal (see fe_eig) and transient (see fe_time) response. A tutorial may be found in section 4.10.

Once you have defined a FEM model (section 4.5), material and elements properties (section 4.5.1), loads and boundary conditions (see fe_case), calling fe_simul assembles the model (if necessary) and computes the response using the dedicated algorithm.

Note that you may access to the fe_simul commands graphically with the simulate tab of the feplot GUI. See tutorial (section 4.10) on how to compute a response.

Input arguments are :

  • MODEL a standard FEM model data structure with loads, boundary conditions, ... defined in the case. See section 4.5 (tutorial), fe_case for boundary conditions, fe_load for loads, ...
  • OPT is an option vector or data structure used for some solutions. These may also be stored as model.Stack entries.

Accepted commands are

  • Static: computes the static response to loads defined in the Case. no options are available for this command
     model = demosdt('demo ubeam');cf=feplot;cf.model=model;
     data  = struct('sel','GroupAll','dir',[1 0 0]);
     model = fe_case(model,'FVol','Volume load',data);
     [cf.def,model]=fe_simul('static',model);
    
  • Mode : computes normal modes, fe_eig options can be given in the command string or as an additional argument. For modal computations, opt=[method nm Shift Print Thres] (it is the same vector option as for fe_eig). This an example to compute the first 10 modes of a 3D beam :
      model = demosdt('demo ubeam');cf=feplot;cf.model=model;
      model=stack_set(model,'info','EigOpt',[6 10 0 11]);
      [cf.def,model]=fe_simul('mode',model);
    
  • DFRF: computes the direct (full) response to a set of input/output at the frequencies defines in Stack. It is reminded that direct frequency response computation is very rarely a good idea and the combination fe2ss, qbode is orders of magnitude faster.
     femesh('reset'); model = femesh('testubeamt');
     model=fe_case(model,'FixDof','Clamped end','z==0');
     r1=struct('DOF',365.03,'def',1.1); % 1.1 N at node 365 direction z 
     model=fe_case(model,'DofLoad','PointLoad',r1); 
     model= stack_set(model,'info','Freq',1:10);
     def=fe_simul('DFRF',model);
    

    One can define a frequency dependence of the load using a curve (see section 7.9 for more detail). For example:

     model=fe_curve(model,'set','input','Testeval (2*pi*t).^2');
     model=fe_case(model,'setcurve','PointLoad','input');
    

    Accepted options are : -sens computes response at sensors; -AssembleCall bypass or standard assemble call.

  • Time : computes the time response. You must specify which algorithm is used (Newmark, Discontinuous Galerkin dg, Newton, Theta, or NLNewmark). For transient computations, opt= [beta alpha t0 deltaT Nstep] (it is the same vector option as for fe_time). Calling time response with fe_simul does not allow initial condition. This is an example of a 1D bar submitted to a step input :
      model=demosdt('demo bar');
      [def,model]=fe_simul('time newmark',model,[.25 .5 0 1e-4 50]);
      def.DOF=def.DOF+.02;
      cf=feplot;cf.model=model;cf.def=def;
      fecom(';view1;animtime;ch20');
    

See also

fe_eig, fe_time, fe_mk