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