SDT-rotor         Contents     Functions         Previous Next     PDF Index

nl_solve

Purpose

Integrated non linear simulations

Description

The simulation of non linearities require special handling in SDT, which is packaged in the non linear toolbox. This function aims at performing classical studies, such as done by fe_simulfor classical SDT models with this special handling.

See nllist for the list of supported non linearities.

TimeOpt

nl_solve('TimeOptMethod',RO) used to initialize fe_time options for later simulation. Currently implemented methods

Associated options provided in RO or in the command are

Static

To compute the static state of a model with non-linearities.

q0=nl_solve('static',model);

It is possible to use custom fe_time simulation properties using the model stack entry info,TimeOptStat. See nl_spring TimeOpt for fields and defaults.

It is possible to use as command option any field from the usual static simulation option, see sdtweb nl_spring#TimeOpt to have more details. E.g. To redefine on the fly the maximum number of iteration, one can enter [q0,opt]=nl_solve('static maxiter 100',model);.

By default, the staticNewton algorithm implemented in fe_time is called.

An Uzawa algorithm is also implemented in nl_solve, under the method static nl_solve uzawa. This algorithm is very different from the staticNewton one since here the solution is not incremented but fully re-computed at each iteration. This is useful when some non-linear forces do not derive from potentials. Command StaticUzawa can be used in nl_solve – to access it: q0=nl_solve('static Uzawa',model);.

Mode

The definition of modes for non-linear models is not straight forward. This command aims at computing tangent modes as function of a non-linear model current state. The resolution thus concerns a linear model with tangent stiffness, damping matrices corresponding to the model current displacement, velocity, acceleration state. The eigenvalue solvers used are then fe_eigfor real modes and fe_ceigfor complex modes.

By default, modes tangent to a static state are computed. A static simulation is performed to produce a model state from which tangent matrices are computed. It is also possible to compute tangent modes at specific instants during a transient simulation, at SaveTimes instant, and to store frequency/damping data and deformations.

A set of command options allows detailing the mode computation wanted and the output.

Accepted command options to control the model computation itself are

The -stat and -time options are mutually exclusive and define the base solver options to be used by fe_timefor the preliminary state computation. With -stat option (default) the stack entry info, TimeOptStat will be sought and used if found. With -time option, the stack entry info,TimeOpt will be used if found.

The -traj option is complementary and is used to force the complex mode computation on provided states. On can either provide the state in deformation curve format, see sdtweb def as a last argument, or use predefined stack entries. In -stat mode (default), the model stack entry curve,q0 will be sought and used if found, if not the result will use the -skip mode. In -time mode, the model stack entry curve,TSIM will be sought and used. If not found an error will occur.

Accepted command options to control the output format are

Internally, the solver defines and uses the model stack entry info,SolveOpt structure to handle the options documented above. One can define it as a structure with the fields documented (case sensitive) and provide it instead of the EigOpt input. Additional advanced field are then accessible

The various input and output strategies allow for the support of several input syntax. The following calls are thus accepted, with model a standard SDT model, Case a standard SDT case structure, eigopt either a vector providing options for fe_eigor a structure with optional fields defined above, def a standard SDT deformation field structure used by -traj when necessary.

nl_solve('mode',model);
nl_solve('mode',model,eigopt);
nl_solve('mode',model,Case,eigopt);
nl_solve('mode',model,def);
nl_solve('mode',model,Case,def);
nl_solve('mode',model,eigopt,def);
nl_solve('mode',model,Case,eigopt,def);

Sample calls using command options to extract tangent modes are given below.

def0=nl_solve('Mode',model)
def0=nl_solve('Mode',model,[5 20 1e3]) % with eigopt
def0=nl_solve('Mode-stat-fullDOF',model);
defT=nl_solve('Mode-time',model);
hist=nl_solve('Mode-time-dataOnly',model);
histC=nl_solve('Mode-cpx-time-dataOnly',model);
defC=nl_solve('Mode-cpx-time-alpha-real''MyBas''-fullDOF',model);
def1=nl_solve('Mode-skip-fullDOF',model);

Post

The Post command allows performing energy and potential further post treatments of a non-linear simulation. The output is integrated in the standard fe_timesimulation outputs in field out.Post that is a three columns cell array directly compatible with the iiplot format.

To obtain the post treatments, one must define them prior to starting the simulation. Direct computation of the post-treatments a posteriori is also possible.

The following post treatments are available


Command PostEstimate allows analyzing the energy curves to compute

The following command options allow altering the estimation

r1 = nl_solve('PostEstimate',def);
r1 = nl_solve('PostEstimate',def.Post{1,3});
r1 = nl_solve('PostEstimate',{'disp(1)'});
r1 = nl_solve('PostEstimate',{'Post_NLsolve(1)'});

TgtMdlBuild,Assemble

Integrated command to generate linearized models around a specific working point. This command packages the tangent model generation procedures of nl_solve Mode-backTgtMdl. The low level implementations are documented in nl_spring NLJacobianUpdate (for example keepLin interaction are documented there).

% Linearized model generation
% sample model with cubes in contact
model=d_contact('cubes cbuild');
% resolve static state
q0=nl_solve('static',model);
% linearized model
mo1=nl_solve('TgtMdlBuild',stack_set(model,'curve','q0',q0));
% check the result
feutil('info',mo1)
SE=stack_get(mo1,'SE'); SE{1,3}

©1991-2023 by SDTools
Previous Up Next