SDT-nlsim
Contents  
Functions  
 ![]() ![]() |
Purpose
High level contact handling in SDT/NL and SDT/contact module.
This command generates contact data necessary to perform computation of observation and tangent matrices, and possible feplot displays (when using p_contact this command is handled with the syntax
ctc_utils('Generate',model,data)
model is a standard SDT model, data is a structure or a cell array of structures defining contact interactions. data has the fields
The following fields are optional, and only required for tangent matrix computations. xxx why not set
If sequentially called for a single model, Generate will concatenate the contact data model with new data. Command option -reset resets the contact data and only keeps the result from the last call.
For SDT/NL models,
This command handles high level contact/friction laws assignments
model=ctc_utils('setcontId par val',model)'
contId is an identifier of the contact law to define. One can either use ctcnamename, with name the contact interaction name (corresponding to the model stack entry), or proidval with val the contact elements ProId attached to the contact law.
One can then assign any property par to val regarding contact and friction data in the command string. Accessible parameters are ContactLaw, FrictionLaw, Fu, Fv, TangStick, Euler, and other fields relative to contact are supported.
The alternative command setEdit allows editing fields Fu and Fv by only specifying the varying parameters instead of redefining the full sub-property.
The following examples illustrate the syntax use for a model with contact property my_ctc and ProId 1001:
% two equivalent calls to assign a linear contact property % of stiffness 1e10 and fixed jacobian value to 1e9 model=ctc_utils('set ctcname"my_contact" ContactLaw"linear" Fu"Kc 1e10" KcLin 1e9',model); model=ctc_utils('set ProId 1000 ContactLaw 1 Fu"Kc 1e10" KcLin 1e9',model); % call to assign a friction law with tangent sticking property model=ctc_utils('set ProId 1000 FrictionLaw11 Fv"mu 0.3 kappa 1e5" TangStick 1',model); % two equivalent calls to modify kappa in the friction law prop Fv model =ctc_utils('set ProId1000 Fv"mu 0.3 kappa 1e3"',model); % need to specify the full Fv model=ctc_utils('setEdit ProId 1000 Fv"kappa 1e3"',model); % with edit no need to specify all Fv param
Definition of customized local orientation MAPs is possible using further arguments,
MAP=struct('dir',{{0,1,0,'v3x','v3y','v3z'}},... 'lab',{{'v1x','v1y','v1z','v3x','v3y','v3z'}}); model=ctc_utils('set',model,'MAP',MAP);
This command allows removing contact elements and/or properties in the model, and the contact coupling superelement tgtctc.
model=ctc_utils('RemovecontId',model);
contId is an identifier of the contact law to define. One can either use ctcnamename, with name the contact interaction name (corresponding to the model stack entry), or proidval with val the contact elements ProId attached to the contact law.
The following command options are available:
This command recovers contact properties in the model. The base syntax is [cproid,cil,cpro]=ctc_utils('GetCPro',model)
model is an SDT model with contact elements. The outputs are cproid a column vector providing the ProId of contact elements in the model, cil an ElProp matrix of p_contactentries corresponding to cproid and cpro stack entries of type pro associtated to the contact properties.
The following command options are available
This command outputs data necessary to perform gap observations and generalized force projections for external computations, and feplot selections to display contact fields data.
data=ctc_utils('GetObs',model)
data=ctc_utils('GetObs ProIdi',model)
data=ctc_utils('GetObs Name''val''',model)
data=ctc_utils('GetObs',model,def)
model is a standard SDT model, on which command Generate was performed, or which contains contact elements.
Command option Name"val" allows specifying a contact interaction name for which observation data are necessary.
data is a cell array containing as many lines as declared interactions. The first colum contains the type, here fixed as nl_contact, the interaction names, the third one contains contact data, in a structure format with fields
By default, the observation is based on the constrained DOF (Case.DOF) of the global model.
This command allows computing a posteriori FNL field from a deformation field missing the non-linear data.
def=ctc_utils('GetFNL',model,def)'
This command output in a cell array for each asked ProId, a struct with fields EltId and wjdet with a center node integration rule to provide the weight, or surface associated to each contact element.
data=ctc_utils('GetWeight',model)'
This command sets up parameter data in contact properties. They can be used to obtain a parametered tangent model with command ctc_utilsTangentMdl.
model=ctc_utils('ParInit',model,par);
model is a standard SDT model, on which command Generate was performed, or an SDT/NL model with contact elements. par is a parameter definition entry or a cell array of such entries. See .param field description in fe_range to obtain more information about these entries, the following restrictions apply
Zeto thickness elements are also supported. The same syntax can be used. Parameter types in field .infp are specific as
This command generates a surface elastic bonding superelement, that corresponds to TIE or GLUE notions in most codes. It takes the same input as a ctc_utilsGenerate call but will either output a coupling superelement with command TieSe or the model to which the superelement has been added with command TieSeAdd.
Syntax is SE=ctc_utils('TieSe',model,RA);
First input is a finite element model, second input is a struture RA with mandatory fields .slave and .msster providing surface selections on which contact will be formulated. RA can contain any contact property field handled by ctc_utilsGenerate, so that the assembled superelement can integrate the desired formulation.
This command replaces contact elements with zero thickness elements. model=ctc_utils('Ctc2Zt',model).
The contact elements are replaced by zero thickness elements with p_zt properties. A fe_casegConnectionSurface constraint is applied between the zero thickness elements and the slave surface. If the underlaying mesh is second order the new elements are also unjoined from the master surface and a fe_casegConnectionSurface constraint is applied between the zero thickness elements and the master surface. This is required as p_zt properties are applied to first order element topologies.
For bilinear contact properties the same contact stiffness density is applied, for other cases an automated estimation is performed. Tangential coupling properties are by default based on the kappa values in p_contactlaws. No coupling is applied for models with no friction or no friction law.
The following command options are available
% Model with contact properties model=d_contact('Cubes cbuild') feutil('info',model) % Convert to zt elements model=ctc_utils('Ctc2Zt',model) feutil('info',model)
This command converts a coupling superelement based on a penalized fe_casegConnectionSurface constraint into a contact formulation. Contact elements are build on the master side of the constraint. By default contact properties are set as a bilinear contact with automatic stiffness density and a 2D sliding coulomb friction model with planar coupling for tangent models TangStick=1, contact states are evaluated on any present static state in the model stack curve,q0. It is possible to provide other properties.
The base syntax is model=ctc_utils('MpcSe2Ctc',model,list)
model is a model with superlements generated by penalized fe_casegConnectionSurface constraints (see feutilbCaseC2SE). list is a column cell array of superelement names to be converted. In option the second column of list can be a structure providing contact properties to be used as in GenerateContact command.
The following command options are available
% Model to couple model=d_contact('Cubes'); % Generate a penalized connection surface constraint model=fe_caseg('ConnectionSurface -dens -KpAuto -MaxDist1e-6',model,'tie',... 'group1 & selface & innode{z==1}','group2 & selface & innode{z==1}'); % compute modes d1=fe_eig(model,[5 10 1e3]); % convert penalized constraint to contact coupling model=ctc_utils('MpcSe2Ctc',model,{'tie'}); % compute modes and check frequencies d2=nl_solve('ModeSkip-fullDOF',model,[5 10 1e3]); [d1.data d2.Mode.data(:,1)]
This command converts zero thickness elements to contact elements. This is currently a partial implementation for normal contact without friction and hexa8 based surface only. Please report to SDTools if a broader application case is necessary. A bilinear contact model based on p_zt properties is setup.
model=ctc_utils('Zt2Ctc',model);
This command outputs a coupling superelement containing the tangent contact friction stiffnesses.
SE=ctc_utils('TangentMdl',model,def);
model=ctc_utils('TangentMdl inModel',model);
model is a standard SDT model, on which command Generate was performed, or an SDT/NL model with contact elements. def is a standard SDT deformation curve see sdtweb def which will be used to compute tangent coupling matrices. def should have a single column if a static state is provided. An optionally second column can be provided to specify a velocity.
The following command options allow specific use of the command
This commands performs visualization operations to display contact fields in the FEM. Contact fields are expressed at Gauss points, so that a triangulation of the contact Gauss points is necessary. This is performed by the GetObs command. If this was not performed earlier, Show will perform it itself. It can be noted that for SDT/NL models, this information may be precomputed (and stored in def.FNL.NL) by assigning parameter Sel to 1 in the contact parameter.
By default, the display units are MPa for pressures, and µm for lengths.
Command Show allows visualizing standard contact fields generated by SDT/contact module or SDT/NL, which are the following
It must be noted that the model has to be contained in an feplot figure to allow display. If argument def is omitted, cf.def will be used.
The following command options can be used
The following command lines illustrate how Show can be used
% display contact pressure ctc_utils('showPn-reset',cf.mdl,def); % display first direction firction constraint in the full mesh ctc_utils('showFt1 InMesh',cf.mdl,def); % display the friction constraint norm relative to its initial state ctc_utils('ShowPta Rel -reset',cf.mdl,def); % display the gap field in mm rather than in micrometers ctc_utils('ShowG unit"MM"',cf.mdl,def);
Examples are provided in function d_contact.
A simple cube model and a simple disc brake models are available, respectively using the commands d_contact('cubes') and d_contact('DiscBrake').
Application examples are then available in the script command section:
% contact handling demonstration d_contact('script Cube_Basic') % disc brake with polar friction basis and convection observation d_contact('script Brake Polar') % simple static resolution d_contact('script Brake')